2011-09-06 66 views
-2

jquery ajax應該調用testing(propertyLevelId)函數。jquery ajax應該調用函數

function name(roleId) { 
$.ajax({ 
    url: '../UserManagement/GetRoleLevel' + '/?roleId=' + roleId, 
    type: "POST", 
    dataType: "json", 
    contentType: 'application/json', 
    //async: false, 
    success: function (result) { 
     $.each(result, function (key, value) { 
      alert(value.Value); 
      propertyLevelId = value.Value; 
     testing(propertyLevelId);//It doesnt call the function 
    }, 
    complete: function() { }, 
    error: ServiceFailed// When Service call fails 
});  
} 


function testing(propertyLevelId) { 
    alert(propertyLevelId); 
} 
+1

它確實調用函數...除非它首先出錯,但是您沒有告訴我們它做了什麼,告訴我們您是如何檢查錯誤,還是向我們顯示了您正在使用的數據。 – Quentin

+0

嘗試解釋更多正在發生的事情....例如它是否到達了循環?你會得到你在foreach的第一行中指定的警報嗎? –

回答

2

如果你看看你的JavaScript控制檯,你應該看到一個語法錯誤,因爲你的ajax塊是不完整的。你永遠不會完成你傳遞each匿名函數和閉括號和半在each電話:

success: function (result) { 
    $.each(result, function (key, value) { 
     alert(value.Value); 
     propertyLevelId = value.Value; 
    testing(propertyLevelId);//It doesnt call the function 
    // ===> here <=== 
}, 

它幫助,如果你一直縮進你的代碼,這樣你就可以更容易地看到這些類型的錯別字。

這裏有一個固定的版本:

function name(roleId) { 
    $.ajax({ 
     url: '../UserManagement/GetRoleLevel' + '/?roleId=' + roleId, 
     type: "POST", 
     dataType: "json", 
     contentType: 'application/json', 
     //async: false, 
     success: function (result) { 
      $.each(result, function (key, value) { 
       alert(value.Value); 
       propertyLevelId = value.Value; 
       testing(propertyLevelId);//It doesnt call the function 
      }); 
     }, 
     complete: function() { }, 
     error: ServiceFailed// When Service call fails 
    });  
} 

作爲一個側面說明,除非你在你還沒有表現出一個封閉的範圍,宣佈propertyLevelId地方(我不是在談論參數testing與相同的名稱,我說的是你在匿名函數中使用的變量),你正在淪爲The Horror of Implicit Globals