问题起因:
我在编写一个Django项目, 业务从后端到前端的时候, 取不到后端返回值的问题。
我是通过 iframe 框架 和 form 表单 伪造了 一个 ajax 请求发送给后端, 其中 iframe框架中判定了一个事件触发函数,如下:
<iframe id="ifm1" name="ifm1" style="display: none"></iframe>
<form id="fm1" action="AjaxFile.html" method="post" enctype="multipart/form-data" target="ifm1">
{% csrf_token %}
<input type="file" value="提交" multiple="" name="image" onchange="uploadfile3()">
</form>
然后跳转到 uploadfile3() 这个函数, 我一直拿不到返回值的
问题代码最开始是这样的
function uploadfile3() {
$("#ifm1").onload = function () {
let content = JSON.parse($("#ifm1").contents().find("body").text());
if (content.status) {
let image = document.createElement("img");
image.src = "/" + content.imagepath;
image.height = 80;
image.width = 80;
$("#print_image").append(image);
}
}
$("#fm1").submit();
}
然后我试着让程序跑起来, 从后台我可以看到,
先查看后端响应:

没有问题
然后在浏览器调试, 发现 content = “” 是一个空的,
然后 console 一下

结果又有值,
而且我后端数据可以拿到, 文件也成功下载, 就是这个onload 拿不到返回值的问题
解决办法:
开始我还以为是一个错误导致的结果。

后面去设置这个头, 发现也不行, 然后我就去百度了一下 onload 这个方法,
这一查就出问题了, 我找了半天, 结果发现没有这个方法??
JQuery 中没有这个方法, 
但是我在编译器又可以调用这个方法, 
靠, 这就很无语了
然后还是使用 js document 对象,完成这个bug。

真就无语了, 不知道是我用错了这个 onload 还是没有这个方法, 不过改成document就ok了

也是搞了几下, 没什么头绪, 换一个方法就成了, 读者有更好的见解,或者办法可以在下面评论指出。
转载:
https://blog.csdn.net/qq_45906219/article/details/110825593