var sv_defaultArray = new Array([]);
sv_defaultArray[0] = "post 1";
sv_defaultArray[1] = "post 2";
sv_defaultArray[2] = "post 3";
控制台显示这里的数组是["post 1", "post 2", "post 3"];
var myJsonString = JSON.stringify(sv_defaultArray);
控制台显示这里的数组是["post 1", "post 2", "post 3"];
$.post("http://www.foobar.com/write.php", { 'array': myJsonString });
数组发布:['"后1 '",'"后2 '",'"后3 ']
出了什么问题,为什么数据没有转换成json并作为json提交?
当我调用databack时,我调用它作为jsonp包装在回调函数
您忘记在$.post
上设置dataType
$.post("http://www.foobar.com/write.php",
{ 'array': myJsonString },
function(){/* handle results here */},
"json"
);
无论如何,你有一个普通的数组,所以它将以同样的方式解码。如果你需要{}
,你必须编码关联数组或对象。
var data = {field1: 'data1', field2:'data2'};
//or
var data = new Array();
data['field1'] = 'data1';
data['field2'] = 'data2';
您在进行双重编码。将实际数组传递给$.post
,而不是JSON字符串。
$.post("http://www.foobar.com/write.php", { 'array': sv_defaultArray });
您实际上正在做的是将JSON对象转换为字符串,然后将JSON对象的字符串表示形式发送到服务器。这就是为什么双引号要转义;字符串中的双引号需要按照JSON规范中的描述进行转义。
所以当你执行{'array':myJsonString}
时你实际上得到以下JSON表示:
{'array': "['POST1', 'post2', 'post3']"}
注意'array'
实际上是字符串类型。
如果您希望您的数据作为JSON数组被post,只需这样做:
{'array':sv_defaultArray}