尝试传递表单数据时jquery ajax匿名函数

时间:2015-04-01 12:07:19

标签: jquery ajax django file-upload

我正在尝试通过jquery ajax传递一个输入文件字段,我在我的chrome检查器控制台中得到一个匿名函数,它说这是因为我的脚本中的行:  $就({

继承了我的

之后运行的代码
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

 $("#sendCoverImageForm").click(function(e){
          e.preventDefault()
          var mForm = $("#sendFormOne").serialize()
          $.ajax({
              type: "POST",
              url: "{% url 'ajax_coverimage' %}",
              data: mForm,
              success: function(data){  
                console.log(data)
                 $("#CoverImageModal").modal("hide");
              },
              error: function(data){
                var obj = data.responseJSON
                $("#modalMessage").html("<p style='color:red;'>" + obj + "</p>")
              },
           });
        });

如果我在

之前运行脚本
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

在控制台中我得到了 未捕获的ReferenceError:$未定义 - 与脚本的顶行相关。然后我运行脚本并运行并将文件放入我的模型中,然后页面在DOM中呈现“成功<filename>”而不是控制台。

我是jquery的菜鸟,所以任何帮助都会很乐意收到!

1 个答案:

答案 0 :(得分:0)

$()等同于jQuery对象jQuery(),在这两种情况下都会处理jQuery函数范围内括号之间的语句。
这解释了为什么在包含jQuery src之前脚本会引发Uncaught ReferenceError,因为$符号尚未定义。

正如musa所说,你应该使用FormData对象,但你应该记住,在IE浏览器中它只支持IE10 +,你可以使用插件支持旧版浏览器作为你的代码量# 39;写作支持它们对于刚刚开始使用JavaScript世界的人来说是不愉快的,但是你应该学会如何做到这一点,例如,请参阅filedropjs

这里有tutorial使用FormData(不要介意PHP)。
希望这有帮助!