2016-03-09 66 views
0

我正在使用ajax来获取我想在ajax完成后使用的一些数据。但是我不能操纵响应 这里是我的代码从XMLHttpRequest获取数据responseText

function testAjax() {   
     direc = "controller.php"; 
     return $.ajax({url: direc});    
     }   
     var obj = testAjax(); 
     console.log(obj);   
     console.log(obj.responseText); 

的console.log(obj)返回此:

XMLHttpRequest { readyState=1, timeout=0, withCredentials=false, more...} 

响应

"[{"CLICREDIT_Cod":"1002","CLICREDIT_Credit":"2000","CLICREDIT_FlagEstad":"1"}]" 

responseText的

"[{"CLICREDIT_Cod":"1002","CLICREDIT_Credit":"2000","CLICREDIT_FlagEstad":"1"}]" 

console.log (obj.responseText)返回这个:

(an empty string) 

有没有一种方法来操纵这些数据?我试过一些像JSON.parse的东西,但似乎没有任何工作,任何帮助将不胜感激。 谢谢

+0

您可能要添加jquery的标签,也是响应。 – RhinoDevel

回答

1

因为Ajax的异步,你必须使用,则:

promise.then(doneCallback, failCallback) 

function testAjax() { 
    direc = "controller.php"; 
    return $.ajax({ 
    url: direc 
    }); 
} 
var obj = testAjax(); 

obj.then(function(result) { 
    console.log(result); 
}, function(xhr, ajaxOptions, thrownError) { 
    alert(xhr.status); 
    alert(thrownError); 
}); 
+0

嘿谢谢你的答案,你能解释一下它是如何工作的吗?这对我来说是新的 –

+0

如果你想完全理解代码,你已经学习了如何在javaScript中处理异步任务,jQuery承诺是一种方式,$ .ajax返回一个承诺:http://code.tutsplus.com/tutorials/使用jquery-promises -sync-async-tasks-net-24135 – irfan

1

这是异步的,您需要使用.done()函数。看看示例here

0

可以success后使用回调函数。浏览器不会等待响应并继续执行代码。所以当浏览器得到结果时,回调函数会被触发。

$.ajax({url: direc, success: doSmth}); 
function doSmth(data){ 
//do something with data 
} 
+0

我想使用ajax中的数据,我尝试过使用类似var变量的变量; $ .ajax({url:direc,success:doSmth});函数doSmth(data){ variable = data; variable = data; }然后我意识到它不会那样工作 –

0

成功使用()来获得请求的页面

var responseText={}; 
$.ajax({url: 'controller.php', 
    type:"POST", 
    success: function(data) 
    { 
     responseText= data; 

    }}); 
相关问题