2015-04-06 6 views
3

На стороне сервера у меня есть метод, который принимает массив целых чисел и возвращает объект JSON:Невозможно отправить массив с помощью метода GET?

public JsonResult GetCorrespondingOfficers(int[] categories){ 
    //use `categories` 
    return Json(model,JsonRequestBehavior.AllowGet); 
} 

И у меня есть следующий скрипт на клиенте:

 var categories=[1,2,3]; 
     $.ajax({ 
     url: url, 
     type: 'GET', 
     data: { categories: categories }, 
     contentType: 'application/json; charset=UTF-8', 
     dataType: 'json', 
     success: function (data) { alert('Success');}, 
     async: false 
    }); 

Когда я бегу над кодом я получаю null для параметра categories на стороне сервера. Если я изменю метод от GET до POST, тогда он будет работать. Означает ли это, что я не могу отправить массив или любые данные Json с запросом GET? Если нет, то в чем проблема с моим кодом?

ответ

1

Вы можете отправить массив в виде строки:

... 
data: { categories: JSON.stringify(categories) }, 
... 
2

запрос GET не имеет тела сообщения, так что вы не можете использовать GET с contentType: 'application/json; charset=UTF-8'. Когда вы используете json в запросе GET, браузер разбивает ваш json и добавляет каждое значение ключа josn к URL-адресу (даже если вы используете метод JSON.stringify). Поэтому для использования json и REST вам необходимо использовать метод POST.

+0

Я полностью потерял голову. Всего 2 дня назад я смог сделать это с помощью запросов GET. Теперь единственный вариант, который работает, - это метод POST. Что более интересно, так это то, что он не работает, если для contentType установлено значение 'application/json' –

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