无法识别AJAX发布数据

时间:2014-05-07 05:16:48

标签: javascript php jquery ajax json

我发了一个AJAX请求。

以下是它的设置:

    $.ajax({

        data : { id : 25 },
        dataType : 'json',
        contentType : 'application/json; charset=utf-8',
type  : 'POST',
        // the rest of the setting
        });

这是服务器端:

header("contentType=application/json");

// and then the rest of the request

一切正常。数据通过JSON返回,没有问题。但$ _POST没有填充任何数据,但是当我通过firebug检查ajax请求日志时,我发现它发送了id ...可能是什么问题?当我设置contentType标头和dataType ...

时,存在问题

我也设置了Allow Origin标题,但问题没有解决......

我还使用$_POST$_REQUEST

检查了数据

我使用LARAVEL框架......

5 个答案:

答案 0 :(得分:1)

jQuery的ajax方法的默认方法类型是GET。尝试在您的设置中将方法类型设置为POST,如下所示:

$.ajax({
    type: 'POST',               // <<<<
    data : { id : 25 },
    dataType : 'json',
    contentType : 'application/json; charset=utf-8',
    // the rest of the setting
});

有关ajax方法的详情,请参阅here

<强>更新

我认为最好不要指定contentType。官方文件说:

  

contentType(默认值:'application / x-www-form-urlencoded; charset = UTF-8')    

将数据发送到服务器时,请使用此内容类型。默认为“application / x-www-form-urlencoded; charset = UTF-8”,对大多数情况都适用。如果您明确地将内容类型传递给$ .ajax(),那么它总是被发送到服务器(即使没有数据发送)。 W3C XMLHttpRequest规范规定字符集始终为UTF-8;指定另一个字符集不会强制浏览器更改编码。

答案 1 :(得分:0)

你应该检查$ _GET以查看数据是否存在。 如果您没有明确定义发送数据的任何方法,则默认情况下使用GET方法。 将方法设置为POST或通过$ _GET检索数据以查看它是否存在。

答案 2 :(得分:0)

在ajax中添加类型

$.ajax({

data : { id : 25 },
dataType : 'json',
type :'POST'
contentType : 'application/json; charset=utf-8',
// the rest of the setting

})

答案 3 :(得分:0)

您未通过类型,因此默认为获取请求,请检入$_GET[]或添加 POST 类型ajax电话。

答案 4 :(得分:-1)

您错过了以下列方式声明类型POST使用

$.ajax({

data : { id : 25 },
dataType : 'json',
type :'POST',
contentType : 'application/json; charset=utf-8',
// the rest of the setting

});