2010-08-11 2 views
0

Хех,
Я использую jQuery AJAX Call для вывода данных из самообслуживаемого webservice (того же домена), но он всегда возвращает 0, что указывает на проблему с перекрестным доменом. Но это не должно быть проблемой.Такая же политика происхождения нарушена?

Любые предложения, как исправить это? Благодаря!

Сайт работает мой скрипт

http://www.mysite.com/facebook/el_login 

Мой AJAX вызов:

var data = 'username=' + username.val() + '&password=' + password.val() 
$.ajax({ 
      url: "http://www.mysite.com/api/v01/account/exists.json", 
      type: "GET",   
      data: data,  
      cache: false, 
      complete: function(transport) { 
       if(transport.status == 200) { 
        alert('Success'); 
       } else { 
        alert('Failed ' + transport.status); 
       } 
      } 

     }); 
    }) 

Firebug Заголовки запросов:

Request Headersview source 
Host www.mysite.com 
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 
Accept */* 
Accept-Language en-us,en;q=0.5 
Accept-Encoding gzip,deflate 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive 115 
Proxy-Connection keep-alive 
Content-Type application/x-www-form-urlencoded 
X-Requested-With XMLHttpRequest 
Referer http://www.mysite.com/facebook/el_login 
Cookie sessionid=xxx 

Edit:

Хорошо, похоже, что AJAX звонки на статические сайты (тот же сервер) работают. Мой Webservice Backend основан на Django, Apache2 и mod_wsgi .. возможно, есть причина, почему это не удается.

+1

Выглядит хорошо. Вы уверены, что всегда используете 'http: //' и не смешиваете его с 'https: //'? Нет разных портов? Нет автоматически отбрасывается или добавляется 'www.'? –

+1

Вы пробовали добавить 'function (transport, textStatus)' в обратном вызове и посмотреть, дает ли 'textStatus' более подробную информацию? –

+0

textStatus возвращает значение null, которое указывает на прерванный запрос. –

ответ

1

Хорошо, после нескольких часов Starcraft 2 понял это.
Я телеграфировал мой Submit Button с

$('#submit').click(function() 

, который, кажется, чтобы создать некоторые проблемы с JQuery Ajax

Решение:
Используйте "старый" стиль телеграфировать свой АЯКС вызов.

<input type="button" value="Submit" id="submit" onClick="sendLogin()" /> 

и

function sendLogin() { 
    var query_data = { username: 'test', password: 'test'}; 

    $.ajax({ 
      url: "http://www.mysite.com/api/v01/account/exists.json", 
      type: "POST",   
      data: $.toJSON(query_data),  
      dataType: 'application/json', 
      contentType: 'application/json', 
      complete: function(transport) { 
      if(transport.status == 200) { 
        alert('Success'); 
       } else { 
        alert('Failed ' + transport.status); 
       } 
      } 
     }); 
} 
+0

Нечетный. он работает, если вы используете '$ ('# formID'). submit (function ...' и изменить тип ввода для отправки (и возврата false)? – Jhong

1

Для debuggin я использую:

function showResponse(responseText, statusText, xhr, $form) { 
    debugger; // TODO: Remove in production. 
} 

и в использовании Ajax вызова

error: showResponse 

Вы пробовали, используя следующие параметры:

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

my webservice не требует типа содержимого, если я предоставляю Querystring –

+0

, но в вашем примере я не вижу строку запроса в аргументе url ... –

+0

он передает объект в свойстве data для jQuery – Pointy

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