代码之家  ›  专栏  ›  技术社区  ›  Vivek Singh CHAUHAN

extjs调用restful webservice

  •  2
  • Vivek Singh CHAUHAN  · 技术社区  · 16 年前

    我正在尝试使用extjs进行一个restful webservice调用。下面是我正在使用的代码:

    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 回复  |  直到 13 年前
        1
  •  2
  •   ob1    16 年前

    不能在域之间进行标准的ajax调用。ext.ajax.request的url应该是相对的(相对于脚本的源)。

    如果要进行跨域调用,请使用ScriptTagProxy等。

        2
  •  1
  •   vadimv82    15 年前

    问题正是因为ob1和chuck hinson描述的原因。

    我有一个安静的服务,wich正在tomcat上运行。

    我使用带有json阅读器的extjs创建了一个静态客户机(没有部署到tomcat)。 我刚刚制作了一个html页面,其中集成了extjs,使用rest服务,比如url: http://localhost:8080/service/invoices/

    一直以来,extjs都在发出options请求,而不是get或post,即使我将它们设置为正在使用的方法。问题是这个安全特性,因为客户端不是同一个应用程序的一部分,我正在域之间执行ajax调用。

    一旦我把我的客户机放到我的web应用程序中,部署到tomcat并开始使用相对调用,它就开始工作了。

        3
  •  0
  •   Charles Menguy jdw6415    13 年前

    如果不希望跨域请求,请从属性中删除网站前缀“http://website” url ajax代理。