2013-10-04 67 views
0

我想從$ .ajax返回數據,但是我不能..。從json文件中獲取jqueryString

function call() {  
    var str = null; 
    $.ajax({ url: '/jsonFiles/Products.json', 
        datatype: 'json', 
        success: function (data) { alert(data); str = data; }, 
        error: function() { alert("error"); } 
       }); 
    return str; } 

我得不到結果..。警報(數據)可以工作,然後它返回str失敗..我想要返回JsonString的函數。

+0

您要返回哪裏? – Shyju

回答

0

調用異步巫婆意味着函數將在$ .ajax調用完成之前返回。

這不是建議,但我想你可以解決它通過async:false作爲參數,例如。

$.ajax({ url: '/jsonFiles/Products.json', 
       datatype: 'json', 
       async: false, 
       success: function (data) { alert(data); str = data; }, 
       error: function() { alert("error"); } 
      }); 

更好的解決方案做出其他功能與STR調用時$就完成

0

你忘記了這是異步的。您的功能call$.ajax調用結束之前返回,或返回任何值。您不能在success函數中返回str設置爲,因爲它在call的調用完成後將始終執行。無論您需要如何處理str,要麼在success函數本身中執行,要麼將其保存在閉包/全局範圍中的某個位置,以便其他某個函數可以在其他地方使用它。

0

由Philip G.的建議你可以去一個同步調用

你也可以一起工作回調(首選方案):

function call(callback) {  
    $.ajax({ url: '/jsonFiles/Products.json', 
       datatype: 'json', 
       success: callback, 
       error: function() { alert("error"); } 
      }); 
} 

// call call with a callback function (anonymous in this example) 
call(function(data) { 
    alert(data); 
});