Та же политика происхождения нарушена? - PullRequest
0 голосов
/ 11 августа 2010

Хех,
Я использую JQuery AJAX Call для извлечения данных из собственного веб-сервиса (того же домена), но он всегда возвращает 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

Редактировать:

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

Ответы [ 2 ]

1 голос
/ 12 августа 2010

Хорошо, через несколько часов Starcraft 2 понял это.
Я связал свою кнопку Submit с

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

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

Решение:
Используйте "старый" стиль для соединения вашего 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 );
              }
           }
         });  
}
1 голос
/ 11 августа 2010

Для отладки я использую:

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

и для вызова ajax

error: showResponse

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

        dataType: "json",
        contentType: "application/json; charset=utf-8",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...