Немного фона:
Я пытаюсь реализовать SlickGrid с поддержкой AJAX. Не так много документации, поэтому я использовал этот пример в качестве основы .
В этом примере есть следующий код, который обращается к нужному веб-сервису для получения данных:
req = $.jsonp({
url: url,
callbackParameter: "callback",
cache: true, // Digg doesn't accept the autogenerated cachebuster param
success: onSuccess,
error: function(){
onError(fromPage, toPage)
}
});
req.fromPage = fromPage;
req.toPage = toPage;
Я не совсем уверен, что делает jsonp , но из того, что я прочитал, похоже, что он очень похож на метод ajax в jQuery, за исключением того, что он возвращает json и разрешает междоменные запросы. Веб-служба, которую я вызываю, возвращает только XML, поэтому я изменил этот фрагмент кода на:
req = $.ajax({
url: "/_vti_bin/lists.asmx",
type: "POST",
dataType: "xml",
data: xmlData,
complete: onSuccess,
error: function (xhr, ajaxOptions, thrownError) {
alert("error: " + xhr.statusText);
alert(thrownError);
},
contentType: "text/xml; charset=\"utf-8\""
});
req.fromPage = fromPage;
req.toPage = toPage;
Моя проблема в том, что моя страница выдает ошибку req.fromPage = fromPage;
, потому что req
равно нулю.
Неправильно ли я думать, что я могу просто заменить свой вызов jsonp вызовом метода ajax? Req просто не установлен, потому что мой вызов ajax не завершился к тому времени, когда код выполняется? Как я могу обойти любую из этих проблем?
Если я закомментирую последние две строки и жестко закодирую эти значения в другом месте, все будет хорошо.