2016-03-09 2 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 (объект) возвращает это:

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

, если вы хотите полностью понять код, вы изучите, как задача async обрабатывается в javaScript, jquery обещания - это способ, $ .ajax возвращает обещание: http://code.tutsplus.com/tutorials/ wrangle-async-tasks-with-jquery-promises - 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: directc, success: doSmth}); функция doSmth (данные) { переменная = данные; }, тогда я понял, что это не работает –

0

использовать успех(), чтобы получить ответ на запрашиваемую страницу

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

    }}); 
Смежные вопросы