Различие Между $ .getJSON () и $ .ajax () в jQuery

Мне пришлось прибавить умножение на -1 * к сумме строки состояния и панели навигации, потому что она уходила на ту высоту за пределы экрана,

self.tableView.setContentOffset(CGPointMake(0 , -1 * 
  (self.navigationController!.navigationBar.height +  
  UIApplication.sharedApplication().statusBarFrame.height) ), animated:true)
58
задан ChrisP 2 July 2009 в 07:41
поделиться

5 ответов

Content-type

Вам не нужно указывать этот тип содержимого при вызовах действий контроллера MVC. Специальный тип содержимого «application / json; charset = utf-8» необходим только при вызове ASP.NET AJAX «ScriptServices» и методов страницы. Тип содержимого jQuery по умолчанию "application / x-www-form-urlencoded" подходит для запроса действия контроллера MVC.

Подробнее об этом типе содержимого здесь: Взлом JSON и как ASP.NET AJAX 1.0 предотвращает эти атаки

Данные

Данные верны в том виде, в каком они у вас есть. Если передать jQuery объект JSON, как и у вас, он будет сериализован как PatientID = 1 в данных POST. Эта стандартная форма - это то, как MVC ожидает параметры.

Вам нужно только заключить параметры в кавычки, например "{'PatientID': 1}" когда вы используете службы ASP.NET AJAX. Они ожидают, что будет проанализирована одна строка, представляющая объект JSON, а не отдельные переменные в данных POST.

JSON

Это не проблема в данном конкретном случае, но это хорошая идея, чтобы привыкнуть цитирования любых строковых ключей или значений в вашем объекте JSON. Если вы непреднамеренно используете зарезервированное ключевое слово JavaScript в качестве ключа или значения в объекте, не заключая его в кавычки, вы столкнетесь с проблемой, которая сбивает с толку при отладке.

И наоборот, вам не нужно указывать числовые или логические значения в кавычках. . Всегда безопасно использовать их непосредственно в объекте.

Итак, если вы действительно хотите выполнить POST вместо GET, ваш вызов $ .ajax () может выглядеть так:

$.ajax({
  type: 'POST',
  url: '/Services/GetPatient',
  data: { 'patientID' : 1 },
  dataType: 'json',
  success: function(jsonData) {
    alert(jsonData);
  },
  error: function() {
    alert('Error loading PatientID=' + id);
  }
});
35
ответ дан 7 November 2019 в 05:34
поделиться

Единственное различие, которое я вижу, заключается в том, что getJSON выполняет запрос GET вместо POST.

4
ответ дан 7 November 2019 в 05:34
поделиться

.getJson - это просто оболочка для .ajax, но она обеспечивает более простую подпись метода, поскольку некоторые настройки установлены по умолчанию, например dataType для json, type для получения и т. д.

NB .load, .get и .post также являются простыми оболочками для .ajax метод

19
ответ дан 7 November 2019 в 05:34
поделиться

Заменить

data: { patientID: "1" },

на

data: "{ 'patientID': '1' }",

Дополнительная литература: 3 ошибки, которых следует избегать при использовании jQuery с ASP.NET

11
ответ дан 7 November 2019 в 05:34
поделиться
contentType: 'application/json; charset=utf-8'

Это нехорошо. По крайней мере, у меня это не работает. Другой синтаксис в порядке. Указанный вами параметр имеет правильный формат.

0
ответ дан 7 November 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: