Extjs вызвать RESTful веб-сервис - PullRequest
2 голосов
/ 01 декабря 2009

Я пытаюсь сделать RESTful-вызов веб-сервиса, используя Extjs. Ниже код, который я использую:

Ext.Ajax.request({ url: incomingURL ,
   method: 'POST',
   params: {param1:p1, param2:p2},
   success: function(responseObject){
     var obj = Ext.decode(responseObject.responseText);
     alert(obj);
   },
   failure: function(responseObject){
     var obj = Ext.decode(responseObject.responseText);
     alert(obj);
   }
});

но это не работает, запрос отправляется методом OPTIONS вместо POST.

Я также пытался сделать то же самое, используя приведенный ниже код, но результат тот же:

var conn = new Ext.data.Connection();
conn.request({
  url: incomingURL,
  method: 'POST',
  params: {param1:p1, param2:p2},
  success: function(responseObject) 
  {
    Ext.Msg.alert('Status', 'success');
  },
  failure: function(responseObject) 
  {
    Ext.Msg.alert('Status', 'Failure');
  }
});

Но когда я попытался сделать то же самое, используя базовый вызов ajax (используя непосредственно объекты браузера, т.е. XMLHttpRequest () или ActiveXObject ("Microsoft.XMLHTTP")), он работает нормально, и я получаю ответ, как и ожидалось.

Может кто-нибудь помочь мне, так как я не могу понять, что я делаю неправильно с вызовом extjs ajax?

Ответы [ 3 ]

2 голосов
/ 25 мая 2010

Вы не можете сделать стандартный AJAX-вызов между доменами. URL для Ext.Ajax.request должен быть относительным (относительно источника скрипта).

Если вы хотите делать междоменные вызовы, используйте ScriptTagProxy или подобное.

1 голос
/ 03 ноября 2010

Проблема именно из-за причины, описанной ob1 и Чаком Хинсоном.

У меня есть служба RESTful, которая работает на Tomcat.

И я сделал статический клиент (без развертывания в Tomcat), используя ExtJs с Json reader. Я только что сделал html-страницу с интегрированным в ExtJs сервисом REST, таким как url: http://localhost:8080/service/invoices/

И все время ExtJs делал запрос OPTIONS, а не GET или POST, даже если я устанавливал их как используемые методы. Проблема заключается в этой функции безопасности, потому что Клиент не является частью одного и того же приложения, и я делаю AJAX-вызов между доменами.

Как только я поместил свой клиент в свое веб-приложение, развернул его в Tomcat и начал использовать относительные вызовы, он начал работать.

0 голосов
/ 10 января 2013

, если вы не хотите междоменный запрос, удалите префикс веб-сайта 'http://website' из свойства url прокси-сервера ajax.

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