したいので返す変数から$.getJSON機能
-
09-06-2019 - |
質問
思い返す StudentId
使どの外 範囲 の $.getJSON()
j.getJSON(url, data, function(result)
{
var studentId = result.Something;
});
//use studentId here
このことは、スコーピングが見られるとは思えませんと同じよう c# は
解決
ええ、私の前の答えはgoogle moderatorのhelpを和訳してみましたが注意を払うだ。:)
問題は、匿名の機能はコールバック機能するgetJSONは非同期操作に戻りまでも不確定時点での場合でも、対象範囲の変数がその日の匿名機能(閉鎖のではない値を持っていいと思ってしまうべきである:
var studentId = null;
j.getJSON(url, data, function(result)
{
studentId = result.Something;
});
// studentId is still null right here, because this line
// executes before the line that sets its value to result.Something
任意のコードを実行するの値studentIdのgetJSONコニーズを起のいずれか 以内 このコールバック機能 後 のコールバック関数を実行す.
他のヒント
ていることに対して仕事を同じように c#な
めのスコーピングに似たスレッドセーフで、C#、無効に非同期操作や設定データ型をjson:
var mydata = [];
$.ajax({
url: 'data.php',
async: false,
dataType: 'json',
success: function (json) {
mydata = json.whatever;
}
});
alert(mydata); // has value of json.whatever
もっと簡単なのです。さきほどご説明いたしました $.getJSON
非同期実行の原因となる問題です。の代わりにリファクタリングすべてのコンピュータやケーブル $.ajax
方法を挿入し、次のようにトップの主なものです。jsファイルを無効にするには非同期の挙動
$.ajaxSetup({
async: false
});
幸運を祈っています。
ご希望の場合は委譲するその他の機能でもjqueryを$.fn.表記はこのように:
var this.studentId = null;
$.getJSON(url, data,
function(result){
$.fn.delegateJSONResult(result.Something);
}
);
$.fn.delegateJSONResult = function(something){
this.studentId = something;
}
var context;
$.ajax({
url: 'file.json',
async: false,
dataType: 'json',
success: function (json) {
assignVariable(json);
}
});
function assignVariable(data) {
context = data;
}
alert(context);
うーん、まだ直列化されたオブジェクトの StudentId
それがだと思います:
var studentId;
function(json) {
if (json.length > 0)
studentId = json[0].StudentId;
}
ものだけを返す StudentId
そのものかもしれない:
var studentId;
function(json) {
if (json.length > 0)
studentId = json[0];
}
編集:か .length
なにも必要ないだけ返される汎用のコレクションのJSON).
編集#2に、この作品だけを試験:
var studentId;
jQuery.getJSON(url, data, function(json) {
if (json)
studentId = json;
});
編#3は、実際のJSを使った:
$.ajax({
type: "POST",
url: pageName + "/GetStudentTest",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{id: '" + someId + "'}",
success: function(json) {
alert(json);
}
});
のaspx.vb:
<System.Web.Services.WebMethod()> _
<System.Web.Script.Services.ScriptMethod()> _
Public Shared Function GetStudentTest(ByVal id As String) As Integer
Return 42
End Function
所属していません StackOverflow