Ошибка $ .ajax () в jquery-1.6.2, но не в jquery-1.4.1 - PullRequest
6 голосов
/ 26 июля 2011

Я использовал $.ajax(), чтобы использовать локальный веб-сервис .asmx.Вот мой код для вызова:

    $("#btnGetOne").click(function() {
        $.ajax({
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            url: 'http://localhost:53003/TestWebService.asmx/GetServant',
            data: '{ "servant_id": "' + $("#txtServantID").val() + '" }',
            dataType: 'json',
            success: function(data, textStatus, jqXHR) {
                var jsnData = $.parseJSON(data.d);
                $('#DisplayArea').html(jsnData.Servant_Name);
            },
            error: function(jqXHR, textStatus, errorThrown) {
                alert(textStatus + ' ' + errorThrown);
            }
        });
    });

Как вы можете видеть, вызов ajax выполняется, когда я нажимаю btnGetOne.

Как и в моем заголовке вопроса, это работает в jquery-1.4.1,но когда я использовал jquery-1.6.2, я получаю errorThrown, говорящий No Transport.

Есть ли что-то еще, что я пропускаю?

1 Ответ

7 голосов
/ 26 июля 2011

Ваша страница HTML + JS, вероятно, не загружена из localhost:53003, в то время как вы пытаетесь, используя Ajax, URL-адрес в домене localhost:53003.

Итак, похоже, что вы пытаетесь сделать междоменный запрос, что запрещено - см. Одинаковая политика происхождения .


Взглянув на документацию jQuery.support, вы можете включить jQuery.support.cors (цитирование) :

cors равно true, если браузер может создать XMLHttpRequest объект, и если этот XMLHttpRequest объект имеет withCredentials имущество.

Включение междоменных запросов в средах которые еще не поддерживают cors, но разрешают междоменные запросы XHR (гаджет Windows и т. д.), установите $.support.cors = true;.


И вот несколько ссылок, которые могут помочь:

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