グローバル変数 var JsonData;
ここに Ajax 処理メソッドがあります:
JScript コード:
function GetJson(DataSourceName) {
$.ajax({
type: “post”,
url: “Ajax/AjaxData.ashx?MethodName = ” DataSourceName,
contentType: “application/json;”,
data: “”,
dataType: “json”,
success: function (Result) {
JsonData = Result;
},
error: function (result) {
alert("情報リスト取得エラー");
}
}; return JsonData;
}
これでクラスができました。
JScript コード:
function DrawDropDownList( sFieldRuleMethod)
{
GetJson(sFieldSourceName);
var b = JsonData;
}
では、DrawDropDownList を実行すると常に JsonData を取得できないのはなぜでしょうか。
中断ポイントを追跡したところ、DrawDropDownList メソッドのすべてが実行された後に GetJson メソッドが入力されることがわかりました。
GetJson で取得した結果データを取得する方法はありますか?
success: function (結果) {
//Do Something
},
GetJson は一般的なメソッドであり、単一のメソッドを実行したくないため、取得したデータを使用したいだけです。
コールバックでは返せないため、同期する必要があります。それだけです。
もう 1 つの方法は同期には推奨されません。関数パラメータをコールバック関数として追加し、その関数に ajax の結果を渡す必要があります。
function GetJson(DataSourceName,callback) {
$.ajax({
type: " post"、
url: "Ajax/AjaxData.ashx?MethodName=" DataSourceName、
contentType: "application/json;"、
data: ""、
dataType: "json",
成功: 関数 (結果) {
JsonData = 結果;
callback(JsonData)
},
エラー: 関数 (結果) {
alert("エラー情報リストの取得") ;
window.close();
}
});
//return JsonData;
}