Php 使用ajax问题发送JSON数据
我有以下代码:Php 使用ajax问题发送JSON数据,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我有以下代码: var arr = {City:'Moscow', Age:25}; $.ajax({ url: "<? echo $this->createUrl('cities/index');?>", type: "POST", data: JSON.stringify(arr), contentType: "application/json; charset=utf-8", dataType: "json", async
var arr = {City:'Moscow', Age:25};
$.ajax({
url: "<? echo $this->createUrl('cities/index');?>",
type: "POST",
data: JSON.stringify(arr),
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(data){
alert(data);
}
});
及
但是两者都给出了空结果(也检查了Firebug)。传递给
$的数据
选项。ajax()
必须是一个简单的对象,jQuery将转换为格式为key1=value1&key2=value2..
的字符串,或者它应该是格式为key1=value1&key2=value2..
的字符串
在您的情况下,可以通过传递对象本身并让jQuery执行查询字符串格式化来解决此问题:
$.ajax({
...
data: arr,
...
});
传递给
$.ajax()
的data
选项必须是一个简单的对象,jQuery将其转换为key1=value1&key2=value2..
格式的字符串,或者应该是key1=value1&key2=value2..
格式的字符串
在您的情况下,可以通过传递对象本身并让jQuery执行查询字符串格式化来解决此问题:
$.ajax({
...
data: arr,
...
});
我想您不需要严格地处理数据,因为数据应该是PlainObject或String,但在您的情况下,您可以像下面这样简单地编写
var arr = {City:'Moscow', Age:25};
$.ajax({
url: "<? echo $this->createUrl('cities/index');?>",
type: "POST",
data: arr,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(data){
alert(data);
}
});
var-arr={城市:莫斯科,年龄:25};
$.ajax({
url:“”,
类型:“POST”,
数据:arr,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
async:false,
成功:功能(数据){
警报(数据);
}
});
正如jquery官方网站中记录的那样
资料
类型:PlainObject或String
要发送到服务器的数据。如果需要,它将转换为查询字符串
还不是字符串。它被附加到GET请求的url。看见
processData选项以阻止此自动处理。对象必须
必须是键/值对。如果值是数组,jQuery将序列化多个
基于传统设置值的具有相同键的值
(如下所述)
我想您不需要严格地处理数据,因为数据应该是PlainObject或String,但在您的情况下,您可以像下面这样简单地编写
var arr = {City:'Moscow', Age:25};
$.ajax({
url: "<? echo $this->createUrl('cities/index');?>",
type: "POST",
data: arr,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(data){
alert(data);
}
});
var-arr={城市:莫斯科,年龄:25};
$.ajax({
url:“”,
类型:“POST”,
数据:arr,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
async:false,
成功:功能(数据){
警报(数据);
}
});
正如jquery官方网站中记录的那样
资料
类型:PlainObject或String
要发送到服务器的数据。如果需要,它将转换为查询字符串
还不是字符串。它被附加到GET请求的url。看见
processData选项以阻止此自动处理。对象必须
必须是键/值对。如果值是数组,jQuery将序列化多个
基于传统设置值的具有相同键的值
(如下所述)
试试这个
var arr = {City:'Moscow', Age:25};
$.ajax({
url: "<? echo $this->createUrl('cities/index');?>",
type: "POST",
data: arr,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(data){
alert(data);
}
});
var-arr={城市:莫斯科,年龄:25};
$.ajax({
url:“”,
类型:“POST”,
数据:arr,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
async:false,
成功:功能(数据){
警报(数据);
}
});
试试这个
var arr = {City:'Moscow', Age:25};
$.ajax({
url: "<? echo $this->createUrl('cities/index');?>",
type: "POST",
data: arr,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(data){
alert(data);
}
});
var-arr={城市:莫斯科,年龄:25};
$.ajax({
url:“”,
类型:“POST”,
数据:arr,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
async:false,
成功:功能(数据){
警报(数据);
}
});
您还可以在Ajax中设置数据类型
,以指定内容类型,如下所示
var city='city name';
var age=10;
$.ajax({
url: "<? echo $this->createUrl('cities/index');?>",
type: "POST",
data:"City="+city+"&Age="+age,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(data){
alert(data);
}
});
您还可以在Ajax中设置
数据类型
,以指定内容类型,如下所示
var city='city name';
var age=10;
$.ajax({
url: "<? echo $this->createUrl('cities/index');?>",
type: "POST",
data:"City="+city+"&Age="+age,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(data){
alert(data);
}
});
Remove
JSON.stringify
RemoveJSON.stringify
我还有一个问题。我将对象替换为数组,var arr=[1,2,3]。。。和。。数据:JSON.stringify(arr)。。但是它没有发送,我也尝试了没有stringfy。看看这个,它可能会帮助你@Sarvarisonboyev我知道了,它帮了很多。伟大的很高兴它有帮助:)别忘了在所有你觉得有用的答案中标记为答案@SarvarisonBoyevi我还有一个问题。我将对象替换为数组,var arr=[1,2,3]。。。和。。数据:JSON.stringify(arr)。。但是它没有发送,我也尝试了没有stringfy。看看这个,它可能会帮助你@Sarvarisonboyev我知道了,它帮了很多。伟大的很高兴它有帮助:)别忘了在所有你觉得有用的答案中标记为答案@Sarvarisonboyev