我已经尝试了10个不同的解决方案来解决这个问题在stackoverflow上没有一个工作,继承人的问题,我需要通过ajax发布一个数组到一个网址 简单吧?
数组来自post $ value,如$ _post [xxx],我存储在var。
我模拟了一个js函数,它有相同的错误,而不是传递我刚刚作为函数中的var包含的数组,问题是数据没有被发布到url。 pastebin链接:http://pastebin.com/8ivWqJ8g
function generateImage() {
var Imagedata = [];
Imagedata['id'] = 1;
Imagedata['type'] = 'some type';
var url = '';
$.ajax({
url: url,
processData: false,
dataType: 'JSON',
data: JSON.stringify(Imagedata) ,
method:'POST',
async: false
});
答案 0 :(得分:3)
将数据转换为JSON时,数组的命名属性不会被序列化。
数组应该包含一组有序值,而不是一组任意名称:值对。
使用普通对象({}
)而不是数组。
旁白:
请勿使用processData: false
,除非您将不是字符串或对象的内容传递给data
(例如FormData
个对象)。因为你传递一个字符串,它是无害的,但没有意义。如果你传递的是一个物体(你可能应该这样,见下文),那就会破坏它。
不要使用async: false
。它已被弃用,并且会损害用户体验(因为它会锁定JS线程,直到响应到来)。
如果您想填充PHP $_POST
,请不要将数据格式化为JSON。不使用data:
将对象直接传递到JSON.stringify
。
如果您确实要制作JSON格式的请求,请不要忘记设置contentType
。
function generateImage() {
var Imagedata = {
id: 1,
type: "some type"
};
var url = '';
$.ajax({
url: url,
dataType: 'JSON',
data: Imagedata,
method: 'POST'
});
// or …
$.ajax({
url: url,
dataType: 'JSON',
contentType: "application/json",
data: JSON.stringify(Imagedata),
method: 'POST'
});
}
答案 1 :(得分:1)
数据应该是这样的对象:
$.ajax({
url: 'http://...',
dataType: 'JSON',
data: {id: 1, type: 'some type'} ,
method:'POST',
async: false
});