2010-09-20 3 views
1

Я пытаюсь проверить JQuery ajax-звонки в Firefox, но он не работает. Я имею в виду, что мой сервер не получает никаких запросов. Но когда я тестирую в IE8, он отлично работает. Вот мой ajax звонок:JQuery ajax не работает в браузере Firefox

$("#getWeatherReport").click(function(){ 
       $cityName = "New York"; 
       $.ajax({ 
        type: "POST", 
        dataType:"xml", 
        url: "http://localhost:8080/Test/WeatherServlet", 
        data: "cityName="+$cityName, 
        success: function(data) { 
         alert($("report", data).text()); 
        }, 
        error: function(xhr, textStatus, errorThrown) { 
         alert('ERROR['+xhr.statusText+']'); 
        } 
       }); 
      }); 

Он даже не вызывает функцию ошибки. И из моего кода сервера (java) я устанавливаю тип контента как «text/xml». Любые предложения?

+0

Вы смотрели его в firebug, чтобы убедиться, что сообщение успешно? – Aardvark

+0

У меня есть Firebug, но по URL-адресу он отображается как «OPTIONS WeatherServlet». Я не уверен, что это вызывает что-то. Это должно быть «POST» правильно? – jgg

+0

Я исправил это, теперь он говорит «parseerror», когда я говорю предупреждение («ERROR ['+ textStatus +'] ') в функции ошибки. – jgg

ответ

2

Ваша строка не правильно сериализовать, я не уверен если это проблема, но это может быть и это, безусловно, потенциал один на потом, попробуйте это для немедленного испытания:

var $cityName = "New+York"; 

в качестве более постоянного решения, проходят data как объект, например:

data: {cityName: $cityName}, 
+0

Я изменил код, как вы предложили. Тем не менее сервер не получает никаких запросов, но вызывает функцию ошибки. Он говорит «parseerror», когда я говорю «alert» («ERROR ['+ textStatus +'] '); – jgg

+0

@goutham - На каком порту находится веб-страница? Если это не ': 8080', он получит пустой ответ, что приведет к ошибке парсера из-за той же политики происхождения –

+0

Да, это 8080. – jgg

2

вы установили Firebug?

Лучше всего установить Firebug, который поставляется с консолью, которая сообщит вам о любых ошибках JavaScript. Вы также можете использовать его (через вкладку «Сеть»), чтобы отслеживать все запросы, сделанные вашей страницей.

Из того, что я могу видеть, ваш код выглядит нормально (кроме возможно вопрос указывал @Nick Craver)

Кроме того, почему «$» на вашей cityName переменной? Префикс '$' в Javascript предназначен для зарезервированного для машинного кода (так что у него нет никаких шансов противоречить коду пользователя).

+0

+1 это должно быть 'var cityName =" New York ";' –

+0

Я исправил это сейчас, когда он говорит «parseerror», когда я говорю предупреждение («ERROR ['+ textStatus +'] ') в функции ошибки. – jgg

1

попробуйте установить плагин Firebug в фф :: https://addons.mozilla.org/en-US/firefox/addon/1843/

Затем проверьте :::: Net Tab >> Все выбранные

Обновите страницу и видите, ваш вызов Ajax на самом деле вызывался. Если да, есть какая-либо синтаксическая ошибка в вызове или любая ошибка переменной null. Если все в порядке, вы можете подумать о дальнейших проблемах.

+0

У меня есть Firebug, но по URL-адресу он отображается как «OPTIONS WeatherServlet». Я не уверен, что это вызывает что-то. Это должно быть «POST» правильно? – jgg

0

Обычно, когда я заканчиваю parseerror, это означает, что тип заголовка возврата неверен или что-то сервер отправил дополнительные данные с ответом. Например, если я хочу вернуть JSON, и я получаю JSON и некоторый HTML-код от x-debug.

Кроме того, запрос OPTIONS предназначен для междоменных запросов, на которые ссылался @Nick.

Полезная ссылка для получения started.

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