Состояние запроса AJAX возвращает 0 - PullRequest
3 голосов
/ 27 ноября 2009

когда я делаю AJAX-запрос с этим кодом, он возвращает статус 0. Что я сделал не так? Кроме того, этот код предназначен для работы в Firefox только по разным причинам.

var ajax;

function connectToOtherServer(server,port,userid,password){

ajax=new XMLHttpRequest();
ajax.onreadystatechange=validateConnection;

params='userid='+encodeURIComponent(userid)+'&password='+encodeURIComponent(password);

alert('http://'+server+':'+port+'/ok.txt');

ajax.open('POST','http://'+server+':'+port+'/ok.txt',true);

ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length",params.length);
ajax.setRequestHeader("Connection","close");

ajax.send(params);

}

function validateConnection(){
if(ajax.readyState===4){
if(ajax.status===200){

alert(ajax.responseText);

}else{
alert(ajax.status);
}
}
}

Ответы [ 3 ]

3 голосов
/ 27 ноября 2009

Если вы попытаетесь подключиться к другому серверу, политика того же источника остановит вас:

Термин «происхождение» определяется с использованием доменное имя, прикладной уровень протокол и (в большинстве браузеров) TCP порт документа HTML, на котором выполняется скрипт. Два ресурса считаются быть того же происхождения, если и только если все эти значения точно то же самое.

1 голос
/ 27 ноября 2009

jquery.com Вы можете подключиться к другому серверу только при использовании JSONP и обратного вызова. Другой сервер должен будет поддерживать механизм JSONP / callback. Этот метод включает создание нового тега сценария, а затем удаленный сервер возвращает код обратного вызова в этот тег сценария. Посмотрите на исходный код jQuery (или просто используйте его), чтобы увидеть, как он обрабатывает JSONP.

Основная идея заключается в создании тега сценария с источником в качестве удаленного URL. Удаленный метод возвращает «скрипт», содержащий вызов функции, используя обратный вызов и результирующие данные JSON.

0 голосов
/ 20 мая 2012

Я недавно столкнулся с этой проблемой. Я использовал AJAX для отправки результатов формы, чтобы элементы страницы могли обновляться автоматически. Мои доменные звонки были правильными. SELECT операторы в базе данных будут работать, но INSERT, UPDATE и DELETE операторы не будут.

Оповещения, показывающие прохождение через javascript, указывают на то, что вызов выполняется правильно, но он никогда не попадет в часть процесса php. Простой ответ состоял в том, что элемент формы onsubmit должен включать return false;. После этого все прошло гладко.

<form name="form" action="" method="post" onsubmit="ProcessRequest(this);return false;">

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...