Не удалось загрузить ресурс + вызов $ .ajax в Chrome - PullRequest
2 голосов
/ 09 февраля 2012

У меня очень странная проблема с Chrome и AJAX, у меня есть форма автозаполнения, которая работает некоторое время.Я запустил Visual Studio этим утром, и он больше не работает.Он отлично работает в рабочей среде (с Chrome) и отлично работает локально, если я использую Firefox или IE, для Chrome это не так!

Я получаю ошибку:

Не удалось загрузитьресурс

в инструментах разработчика. Когда я раскрываю ошибку, я получаю:

f.support.ajax.f.ajaxTransport.sendjquery-1.7.1.min.js:4
f.extend.ajaxjquery-1.7.1.min.js:4
$.autocomplete.sourceCreate:217
a.widget._searchjquery-ui-1.8.17.custom.min.js:127
a.widget.searchjquery-ui-1.8.17.custom.min.js:127
(anonymous function)jquery-ui-1.8.17.custom.min.js:127

Я установил точку останова в функции обратного вызова на сервере, но она даже не делаетэто к серверу.Ошибка определенно на стороне клиента, вот код на стороне клиента:

$("#LocationTxt").autocomplete({
            minLength: 4,
            source: function (req, resp) {
                $.ajax({
                    type: "GET",
                    url: "/Ad/SearchLocations",
                    data: "term=" + req.term,
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        resp($.map(data, function (value, key) {
                            return { data: value, label: data[key].Name, value: data[key].Name };
                        }));
                    }, 
                   error: function (data) {
                       alert(data.statusText);
                   }
                });
            },
            select: function (e, ui) {
                var cityId = ui.item.data.Id;
                $('#AdListing_LocationID').val(cityId);
            }
        });

Также инициируется событие ошибки, и свойство statusText является просто «ошибкой».Не очень полезно.У меня установлена ​​версия Chrome: 17.0.963.46 (последняя версия от 09.02.2012).Я полагаю, что мой Chrome обновился сегодня утром, когда я запустил свой компьютер, но я не уверен.Есть ли журнал, чтобы сказать, когда мой хром был обновлен?

1 Ответ

1 голос
/ 09 февраля 2012

Если вы работаете с локальной копией кода, убедитесь, что вы работаете с веб-сервера, такого как localhost. Если вы работаете непосредственно из файловой системы, Google Chrome не позволит вам отправлять запросы Ajax к файлам в файловой системе по соображениям безопасности.

Еще несколько вещей ...

Удалить это:

contentType: "application/json; charset=utf-8",

Вы не отправляете json, вы отправляете запрос GET. Вместо этого добавьте

dataType: "json",

так что jQuery ожидает получить json.

Также может помочь, чтобы ваш сервер возвращал заголовки, устанавливая contentType на application/json с правильной кодировкой utf-8.

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