Я делаю вызов ajax, используя jQuery (jquery- 1.5.2.мин.js). Сервер принимает вызов. fiddler показывает, что текст ответа кажется правильным. Но в javascript моя ошибка: функция вызывается вместо моего успеха: функция, и данные параметров функции ошибки не дают большого представления о проблеме.
Вот функция, в которой я делаю первоначальный вызов:
function SelectCBGAtClickedPoint()
{
$.ajax( {
type: "GET",
dataType: "text",
url: "http://localhost/ajax/SelectCBGAtPoint/1/2",
success:
function( msg )
{
alert( "success: " + msg );
},
error:
function( jqXHR, textStatus, errorThrown )
{
alert( "error: " + jqXHR + textStatus + errorThrown );
}
} );
}
Вот функция, в которой я обрабатываю вызов в моем cherrypy код сервера:
def ajax( ajax, *args ):
with lock:
print "ajax request received: " + str( args )
cherrypy.response.headers[ "Content-Type" ] = "application/text"
return "{ x: 0 }"
Cherrypy — странный зверь, и я подумал, что проблема должна быть в нем. Но, как я уже сказал, я вижу, что и запрос уходит, и ответ возвращается в Fiddler. Вот что Fiddler показывает в виде необработанного представления ответа:
HTTP/1.1 200 OK
Date: Mon, 11 Apr 2011 17:49:25 GMT
Content-Length: 8
Content-Type: application/text
Server: CherryPy/3.2.0
{ x: 0 }
Выглядит хорошо, но затем, вернувшись в javascript, я получаю сообщение об ошибке: функция со следующими значениями параметров (как показано в firebug):
errorThrown = ""
jqXHR = Object { readyState=0, status=0, statusText="error"}
statusText = "error"
Я не знаю, откуда взялось это слово «ошибка». Эта строка нигде не появляется в коде моего сервера Cherpy.
Обратите внимание: несмотря на то, что я возвращаю строку JSON, я установил для типов отправки и получения значение «текст» на данный момент, просто для упрощения, чтобы изолировать проблему.
Любые идеи, почему я получаю этот ответ «ошибка», даже если errorThrown пуст? Может быть, я неправильно "инициализировал" jQuery или jQuery.ajax?