WCF oData サービスにアクセスしてデータを取得する次の JavaScript ルーチンを作成しました。success 要素では、結果変数に結果を取得し、それらに警告します。返されたオブジェクトがあることがわかります。ajax 呼び出しの外で、結果を返す前に 2 番目のアラートを実行すると、結果変数は「未定義」になります。
誰が私が間違っているのか教えてもらえますか?
function retrieveJsonpODataSet(baseUrl, query)
{
var oDataUrl = baseUrl + "?$format=json&$callback=?";
var results;
$.ajax(
{
url: oDataUrl,
contentType: 'application/json; charset=utf-8',
type: 'GET',
dataType: 'jsonp',
async: false,
success:
function (data, textStatus, xhr)
{
results = data.d;
alert(results); // This shows the results
},
error:
function (xhr, textStatus, errorThrown)
{
alert("Query failed.\n\n" + oDataUrl + "\n\n" + errorThrown);
results = null;
}
});
alert(results); // This shows "undefined"
return results;
}
クエリ パラメータは無視してください。ルーチンはまだ完了していません。
編集
最初はasync:false
、ajax 呼び出しにはありませんでした。今追加しましたが、問題は解決しません。