【问题标题】:Equivalent code without the library没有库的等效代码
【发布时间】:2016-02-12 04:06:00
【问题描述】:

我使用教程来获取以下 ajax 代码。在本教程中,他们拥有库 jquery.form.js。代码如下:

function onsuccess(response,status){
    $("#onsuccessmsg").html(response);
        alert(response);
    }
    $("#uploadform").on('change',function(){
        var options={
        url     : $(this).attr("action"),
        success : onsuccess
    };
    $(this).ajaxSubmit(options);
        return false;
});

如果我不想实现jquery.form.js 怎么办。使用普通 ajax(没有库)的等效代码是什么?

更新

我尝试了以下代码:

$("#uploadform").on('change',function(){
                $.ajax({
                    url: $(this).attr("action"),
                    context: document.body,
                    success: function(){
                        $("#onsuccessmsg").html(response);
                        alert("asdf");
                    }
                });
                return false;
            });

它现在什么都不做。

【问题讨论】:

  • 那个 jquery.form.js 库非常有用。我建议从一开始就使用它,因为您以后可能会在项目中使用它。
  • 谢谢,但现在我不想使用它。你知道等价的ajax代码吗?

标签: javascript jquery html ajax forms


【解决方案1】:

这更像是:(抱歉格式化,我在手机上)

            $("#uploadform").on('submit',function(e){
                e. preventDefault() ;
                var formData = new FormData($(this)[0]);

                $.ajax({
                    url: $(this).attr("action"),
                    context: document.body,
                    data: formData, 
                    type: "POST",  
                    contentType: false,
                    processData: false,
                    success: function(response, status, jqxhr){
                        $("#onsuccessmsg").html(response);
                        alert("asdf");
                    }
                });
                return false;
            });

数据变量需要由您通过运行表单字段手动构建。您可能还想查看jquery post,这是编写上述内容的简写方式。


您可以使用这个之前回答的问题来获取您需要传递到 ajax 数据字段的表单数据:

How can I get form data with Javascript/jQuery?

另外值得注意的是,如果您从表单发布文件,您的表单必须有enctype="multipart/form-data"。 使用 ajax 提交表单时,您需要设置contentType: false, processData: falseSee this post for reference.

我已经更新了上面的代码 sn-p 以反映这一点。

如果这回答了您的问题,请将其标记为正确答案。

【讨论】:

  • 非常感谢!我在这个问题中使用了php文件:stackoverflow.com/questions/33640571/…我如何填写“数据”?
  • 这完全是另一个问题,您需要单独发布。如果此解决方案适用于异步发布表单,请接受答案。谢谢。
  • 好的。谢谢!还有1个问题。在我在问题中发布的代码中,onsuccess function,有 2 个参数。 function onsuccess(response,status){...我怎样才能得到这些?
  • 有3个:任何数据,String textStatus,jqXHR jqXHR。您只需在成功函数中放置 3 个变量名。它们可以被命名为任何东西。它们将自动为您填充,并且可以在成功函数的范围内使用。
  • 上传图片时没有任何反应。 (我删除了“数据”,因为我不知道要在其中插入什么。)
猜你喜欢
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 2014-09-02
  • 2015-03-26
相关资源
最近更新 更多