少し背景:
私は実装しようとしており、AJAX を利用した SlickGrid を使用しています。ドキュメントはあまりないので、この例をベースとして使用しました。
この例では、目的の Web サービスをヒットしてデータを取得する次のコードがあります。
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が何をするのか正確にはわかりませんが、読んだところ、jsonを返し、クロスドメインリクエストを許可することを除いて、jQueryのajaxメソッドと非常に似ているようです。たまたま呼び出している Web サービスは 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;
私の問題は、私のページが nullでreq.fromPage = fromPage;
あるためエラーになることです。req
jsonp 呼び出しを ajax メソッドの呼び出しに置き換えることができると考えるのは間違っていますか? コードが実行されるまでに ajax 呼び出しが終了していないため、req が設定されていませんか? これらの問題のいずれかを回避するにはどうすればよいですか?
最後の 2 行をコメントアウトし、それらの値を別の場所にハードコードすると、すべて正常に動作します。