2014-03-20 3 views
0

Я пытаюсь использовать XMLHttpRequest, но когда я вызываю xmlhttp.send (post), я получил xmlhttp с состоянием 1 и статусом 0. Я думаю, что состояние равно 1 в порядке, потому что установлено среднее соединение с сервером , но почему статус 0? К сожалению, другая сторона не получает мою просьбу.XMLHttpRequest со статусом 0

function ajaxRequest(method, url, post, callback_fn){ 
    var xmlhttp; 
    if (window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } else { //code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open(method,url,true); 
    if (method=="POST"){ 
     xmlhttp.setRequestHeader("Content-Type", "text/plain; charset=UTF-8"); 
     xmlhttp.setRequestHeader("Content-Length", post.length); 
    } 
    xmlhttp.send(post); 
    console.log("xmlhttp.readyState = " + xmlhttp.readyState); // = 1 
    console.log("xmlhttp.status = " + xmlhttp.status); // = 0 
} 

Может кто-нибудь мне помочь?

+1

Вы должны на самом деле подождать, пока ReadyState не станет 4, а затем проверьте статус. Посмотрите примеры онлайн. – adeneo

+0

Хорошо, я удалил свой первоначальный вопрос, как вы называете этот метод? Нажмите кнопку, отправьте форму? – epascarello

+0

Я вызываю этот метод нажатием кнопки (onclick). – HenioJR

ответ

1

Отменить щелчок и посмотреть, если он останавливает нулевой статус.

onclick="ajaxRequest(...); return false;" 

Проблема: страница освежает и убивает запрос Ajax.

+0

Все права @epascarello, когда я положил return false в ** onclick **, ** onreadystatechange ** функция уволена. Зачем мне это нужно? Правильно ли это? – HenioJR

1

The onreadystatechange пожаров событий, когда изменяется состояние, и только тогда, когда есть обратный ответ вы можете проверить, что StatusCode запроса было (200, 404 и т.д.)

function ajaxRequest(method, url, post, callback_fn){ 
    var xmlhttp; 
    if (window.XMLHttpRequest) { //code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } else { //code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4) { 
      console.log("xmlhttp.status = " + xmlhttp.status); 
     } 
    } 

    xmlhttp.open(method,url,true); 
    if (method=="POST"){ 
     xmlhttp.setRequestHeader("Content-Type", "text/plain; charset=UTF-8"); 
     xmlhttp.setRequestHeader("Content-Length", post.length); 
    } 
    xmlhttp.send(post); 
} 
+0

спасибо за ваш ответ. Я уже пробовал, но мое приложение никогда не вызывает функцию onreadystatechange. В чем может быть проблема? – HenioJR

+0

Это не то, что вызывает ваше приложение, все XMLHttpRequests будут запускать событие onreadystatechange несколько раз при выполнении запроса ajax -> http://jsfiddle.net/776Wg/ – adeneo

+0

Да, я это знаю. Я выражу себя лучше. Мой XMLHttpRequest не запускает onreadystatechange, никогда, и не показывает какой-либо javascript-исключение или журнал ошибок. – HenioJR

Смежные вопросы