我想用ajax发送一些JSON数据这是我的脚本
$(document).ready(function () {
jsonObj = [];
$('.img-bg').map(function () {
var self = this;
var next = $(this).nextAll('.rectangle');
if (next.length > 0) {
next.map(function () {
item = {};
item.src = self.src;
item.left = $(this).css('left');
item.height = $(this).css('height');
jsonObj.push(item);
});
}
});
var data={ "firstName" : "Ray" };
jsonString = JSON.stringify(jsonObj);
$.ajax({
url: 'testajax.php',
type: 'post',
dataType: 'json',
data: jsonString,
success: function(response) {
console.log(response);
}
});
});
</script>
jsonObj
给出了
[Object, Object, Object]
0: Object
height: "341px"
left: "10px"
src: "http://localhost/docAuto/test.jpg"
__proto__: Object
1: Object
height: "321px"
left: "54px"
src: "http://localhost/docAuto/image.jpg"
jsonString的输出
[{"src":"http://localhost/docAuto/test.jpg","left":"10px","height":"341px"},
{"src":"http://localhost/docAuto/image.jpg","left":"54px","height":"321px"},
{"src":"http://localhost/docAuto/image.jpg","left":"43px","height":"295px"}]
两个var都没有发送,但是如果我发送data
它正在工作。我的Json文件错了?
答案 0 :(得分:1)
您需要将选项作为对象传递给data
。这是一个固定的$.ajax
电话:
$.ajax({
url: 'testajax.php',
type: 'post',
dataType: 'json',
data: { json : jsonString },
success: function(response) {
console.log(response);
}
});
您的testajax.php
现在应该在网址变量json
中看到jsonString。
编辑:修复我的回复。由于缩进问题,我误读了你的代码。
答案 1 :(得分:0)
您不需要使用JSON.stringify
通过jQuery $.ajax()
方法发送json对象... jQuery将负责幕后的转换。只需使用jsonObj作为数据参数。
答案 2 :(得分:0)
您需要以大写字母使用POST
。
答案 3 :(得分:0)
我认为你的JSON缺少关键部分。当我添加密钥时:'first',它有效。你有一个强大的Json阵列:
JSON.stringify({ first: [{"src":"http://localhost/docAuto/test.jpg","left":"10px","height":"341px"},
{"src":"http://localhost/docAuto/image.jpg","left":"54px","height":"321px"},
{"src":"http://localhost/docAuto/image.jpg","left":"43px","height":"295px"}] })