2012-11-14 203 views
0

我想調用一個ajax請求到我的服務器使用函數的json數據。如果我在ajax函數內部調出resp變量,它將成功顯示數據。如果我嘗試將ajax函數設置爲變量,然後控制該變量,則返回undefined。任何想讓這個函數請求數據然後將ti設置爲一個變量來解決的想法?函數返回javascript中的字符串

function jsonData(URL) { 
var xhr = new XMLHttpRequest(); 
xhr.open("GET", URL, true); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4) { 
    var resp = JSON.parse(xhr.responseText); 
    return resp; 
    } 
} 
xhr.send(); 
} 

jsonString = jsonData(http://mywebsite.com/test.php?data=test); 

console.log(jsonString); 

回答

3

這其實是非常簡單的方式。更改通過同步您的來電..

xhr.open("GET", URL, false); 

話雖這麼說,這將阻止瀏覽器,直到操作已完成,如果你可以使用一個回調相反,它可能會是首選。

function jsonData(URL, cb) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", URL, true); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4) { 
     var resp = JSON.parse(xhr.responseText); 
     cb(resp); 
    } 
    } 
    xhr.send(); 
} 

jsonData("http://mywebsite.com/test.php?data=test" 
     , function(data) { console.log(data); });