jquery没有发布数组数据

时间:2015-12-15 20:54:53

标签: javascript jquery arrays ajax

我已经尝试了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
            });

2 个答案:

答案 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
        });