2012-06-01 2 views
0

У меня есть следующий код, в котором я звоню на getlink.php скрипт, чтобы получить ссылку на данный файл. Но когда я делаю alert(xhr.responseText), он ничего не показывает. Но если я выхожу на консоль как console.log("my object: %o", xhr);, он дает поле responseText. код:xmlhttprequest объект работает, но не дает выход в ответ?

function linkFile(file) { 
    uri = "http://localhost/imgbag/getlink.php"; 
    var xhr = new XMLHttpRequest(); 
    var formdata= new FormData(); 
    formdata.append("linkFile",file); 
    xhr.open("POST", uri, true); 
    xhr.send(formdata); 
    console.log("my object: %o", xhr); 
} 

ответ

1

при использовании верно в xhr.open он устанавливает, что это будет асинхронной, что означает ответ придет позже, и вы должны собрать его прикрепление слушателя.

если вы установили, что из параметров к ложным ваш код будет работать (но не будет асинхронной и будет блокировать на вызов (то есть он будет просто сидеть там, пока ответ возвращается)

вот как добавить слушателя (потому что ваш асинхронной подход на самом деле лучше один) ... http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp

0

Определение атрибута onload как это:

xhr.onload = function() { 
    alert(xhr.responseText); 
} 

Это гарантирует, что alert происходит только после того, как запрос был успешно завершен.

Источники: MDN