【发布时间】:2013-01-10 10:54:01
【问题描述】:
我正在使用 jquery ajax 函数。 我在将 JSON 数据发布到服务器时发现了一个问题。
post 数据的类型是 JSON。所以我添加了代码来指定我发送的是 JSON。
contentType: "application/json".
我写了以下代码:
var data = {"data": "mytestdata" };
var option = {
url: 'Handler1.ashx',
type: 'POST',
dataType: 'html',
success: function (result) {
alert(result);
},
data: data,
contentType: "application/json"
};
$.ajax(option);
在服务器端,我使用了以下代码:
string s = context.Request["data"];
但结果s 是null。
从逻辑上讲,设置contentType="application/json"并发布json数据是完美的。但这是假的。
我还尝试了 php 文件中的代码:
echo $_POST["data"];
PHP 表示 $_POST["data"] doesn't exist。
所以我尝试删除代码 -- contentType: "application/json"。
现在,一切正常。
但这让我很困惑。 为什么我们发布真实的json数据时不需要将contentType设置为json?
【问题讨论】:
-
您不发布 json,您发布表单数据。数据会在提交前被jquery编码
-
您可以将选项
processData设置为false。然后数据不会被转换为查询字符串。查询字符串的默认 contentType 为application/x-www-form-urlencoded。 -
@redreggae:不,那行不通
-
@roast_soul 如果您这样做,那么您将无法使用
POST数组获取数据。看看拉贾特的回答。但是你为什么要这样做呢? -
所以最好不要添加
contentType选项,然后它应该可以工作..