Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax jquery post,服务器未接收任何表单数据_Javascript_Jquery_Ajax_Post - Fatal编程技术网

Javascript ajax jquery post,服务器未接收任何表单数据

Javascript ajax jquery post,服务器未接收任何表单数据,javascript,jquery,ajax,post,Javascript,Jquery,Ajax,Post,我有一个id为ajaxform的表单。如果我发送一个数据为formData={id:'something'}的ajax请求;,一切正常,服务器以POST方式获取数据。但是如果我发送数据为formData=$this.serialize;的ajax请求;,服务器未接收任何数据 请参见下面我的ajax代码 $("#ajaxform").submit(function(e){ e.preventDefault(); // avoid to execute the act

我有一个id为ajaxform的表单。如果我发送一个数据为formData={id:'something'}的ajax请求;,一切正常,服务器以POST方式获取数据。但是如果我发送数据为formData=$this.serialize;的ajax请求;,服务器未接收任何数据

请参见下面我的ajax代码

        $("#ajaxform").submit(function(e){
        e.preventDefault(); // avoid to execute the actual submit of the form.
        // add loading image to div
        $('#ajaxchanger').html('<?php echo __('loading...'); ?>');
        //var formData = {id: 'something'}; // if I call the ajax with this data instead the next line, it works!
        var formData = $(this).serialize();
        var formURL = $(this).attr("action");

        $.ajax({
            type: "POST",
            cache: false,
            dataType: "html",
            data: formData,
            processData: true,
            url: formURL,
            success: function (data, textStatus, jqXHR) {
                // replace div's content with returned data
                $('#ajaxchanger').html(data);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                alert("An error occurred: " + jqXHR.responseText.message);
                console.log(jqXHR);
            }
        });
    });
有什么想法吗?

因为。序列化将一组表单元素编码为字符串以供提交。默认情况下,$.ajax使用GET datatype提交数据。假设你有一个字符串名=你的名字和电子邮件=youremail@example.comurl为//example.com/request\u handler,那么您的url随GET方法变为:

http://example.com/request_handler?name=yourname&email=youremail@example.com
根据GET方法,它工作得非常完美


对于POST,它是相同的,因为根据文档,它将表单元素设置为字符串。因此,POST数据类型将无法与.serialize一起使用。要进行更深入的调试,请查看浏览器控制台中的请求。

以下行有一个PHP错误

$('#ajaxchanger').html('<?php echo __('loading...'); ?>');
变化无常

$('#ajaxchanger').html('<?php echo __("loading..."); ?>');
我测试了代码,结果很好


使用语法感知编辑器。您可以避免这种语法错误。

尝试$ajaxform.serialize;而不是$this.serialize;还要确保在输入字段中需要name属性。否则他们就被忽略了,总是一样的问题。每个输入字段都有一个name属性。谢谢jogesh_-pi。但是,您知道如何使用ajax请求将表单数据作为post数据发送吗?@FishWave将字符串划分为对象,并将其发送到表单,如数据:{name:yourname,email:youremail@example.com}是的,谢谢。我有这个想法。但是我希望对于表单中的所有输入有一个更通用的解决方案,jquery代码可以用于我的所有表单,而不仅仅是特定的表单。@FishWave您在服务器端使用PHP吗?是的。如果服务器能够接收post数据,服务器端的一切都可以正常工作。是的,你部分是对的。如果我换线,问题仍然存在。但是如果我把这句话注释掉,那么一切都很好。非常感谢。现在,我明白了!正如k·阿比所说,这是上面的一行。关键是,在那一刻,当我设置加载…,表单不再存在,但是ajax还没有启动。因此,ajax没有数据,因为不再有表单。。。