ajax-jquery帖子,服务器没有收到任何表单数据

时间:2015-01-02 09:14:29

标签: 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 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);
            }
        });
    });

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

.serialize() 编码为一组表单元素作为提交字符串 。默认情况下,$ .ajax使用GET数据类型来提交数据。所以我们假设你有一个字符串name=yourname&email=youremail@example.com,网址是//example.com/request_handler那么你的网址变为GET方法是:

http://example.com/request_handler?name=yourname&email=youremail@example.com

根据GET METHOD,这是完美的。

对于POST,它是相同的,因为根据.serialize()文档,它将表单元素设为字符串。因此POST数据类型不适用于.serialize()。要进行更多deply调试,请在浏览器控制台中查看请求。

答案 1 :(得分:0)

以下行有PHP错误。

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

改变如

$('#ajaxchanger').html('<?php echo __("loading..."); ?>');

我测试了代码和良好的结果。

使用&#34;语法识别&#34;编辑。您可以避免这种语法错误。