2012-04-30 7 views
2

Я выполняю некоторые запросы AJAX на свой сервер. Тип запроса и параметры одинаковы в двух случаях, но тип ответа, поступающий с сервера, отличается.Проблема с запросами AJAX с в браузере

СЛУЧАЙ 1:

Это внедрение в Titanium с помощью клиента титановой сети HTTP.

var xhr = Ti.Network.createHTTPClient({ 
    onload : function() { 
     alert('sucess'); 
    }, 
    onerror : function(e) { 
     alert('error'); 
    }, 
    timeout : 5000 
}); 
var main_url = "http://localhost:3000/shops/560/login.json?api_token=some_token&customer[phone_number]=9988776655&customer[pin]=9876"; 
xhr.open('GET', main_url); 
xhr.send(); 

, который возвращает ответ отлично и, кажется, работает для меня.

СЛУЧАЙ 2:

Это внедрение в локальный файл с помощью метода JQuery AJAX.

var main_url = "http://localhost:3000/shops/560/login.json?api_token=some_token&customer[phone_number]=9988776655&customer[pin]=9876"; 

     $.ajax({ 
     url: main_url, 
     type: "GET", 
     dataType: "json", 
     timeout: 5000, 
     success: function(data, status, xmlstatus) { 
      alert("success"); 
     }, 
     error: function(data, status, xmlstatus){ 
      if (t === "timeout") { 
       alert("timeout"); 
      } else { 
       alert("some error"); 
      } 
     } 
    }); 

Но из-за CROSS политики DOMAIN в браузеры он возвращает

XMLHttpRequest cannot load http://localhost:3000/shops/560/login.json?api_token=some_token&customer[phone_number]=9988776655&customer[pin]=9876. Origin null is not allowed by Access-Control-Allow-Origin. 

Таким образом, чтобы избежать этого я добавил еще один В параметре

&callback = ? 

Но все-таки возвращается

alert('some error'); 

Невозможно разобраться, куда вещи идут не так. Когда URL, параметры, введите все одинаково.

--------------- EDIT -------------

копания вниз iniside дает мне respone:

console.log(data) => parsererror 

и

console.log(xmlstatus) => jQuery164023596301255747676_1335786441349 was not called 
+0

Попробуйте сделать url relative: 'url:" /shops/560/login.json?api_token = some_token & customer [phone_number] = 9988776655 & customer [pin] = 9876 "'. Я видел экземпляры, где jQuery считает, что он запрашивает внешний сервер из-за указанного порта. –

+0

'dataType:" json ",' должен быть 'dataType: «jsonp», '. –

+0

@ AnthonyGrist извините, что не работает. –

ответ

1

Я думаю, что ваш сервер не отвечает jsonp, а просто с json.

JSONP ответ таков:

callback(someJson) 

Где обратный вызов имя обратного вызова вы предоставили или один автоматически предоставляемые JQuery. Вы не можете просто вызвать JSONP сервер, созданный для запросов JSON.

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

клиент: https://github.com/Canop/braldop/blob/master/chrome/braldop/inext_com.js

сервер: https://github.com/Canop/braldop/blob/master/go/src/braldopserver/BraldopServer.go

+0

это была ошибка на конце серверной палочки не ответила обратным вызовом мне :) –

0

Как вы говорите о «локальном файле», будьте осторожны, что вы не можете сделать много в AJAX, если вы загружаете файл с файлом протокола: //. Вам нужно использовать http: //, даже если сервер является localhost.

+0

@ даже после запуска на локальном хосте результат кажется незатронутым, и ошибка так же, как обновлено выше –

+0

Хорошо. Я видел сообщение об ошибке. Таким образом, проблема не связана с используемым протоколом. –

+0

Что такое t он работает для этого ?? Я прочитал несколько блогов и методов, но ни один из них не работает. –

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