質問

思い返す 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top