2015-12-15 2 views
0

ive попробовал 10 различных решений этой проблемы в stackoverflow, и никто из них не работает, вот вопрос, мне нужно отправить массив через ajax на url простенькое право?jquery не публикует данные массива

массив имеет значения post, подобные этому $ _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 
      }); 

ответ

3

Названные свойства массивов не получить сериализации при преобразовании данных в формате JSON.

Массивы должны иметь упорядоченный набор значений, а не произвольный набор пар имя-значение.

Использовать простой объект ({}) не массив.


Asides:

Не используйте 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' 
    }); 

} 
+0

Избили меня к нему. Вот рабочий пример: http://jsfiddle.net/fvkch8hu/ –

+0

jsfiddle ссылка не работает – mithereal

1

данные должны быть объектом:

 $.ajax({ 
     url: 'http://...', 
      processData: false, 
     dataType: 'JSON', 
      data: {id: 1, type: 'some type'} , 

     method:'POST', 
      async: false 
     }); 
+0

Это не сработает. Данные POSTed будут '[object Object]', поскольку вы устанавливаете 'processData: false'. – Quentin

Смежные вопросы