如何调用Sencha中RESTful服务的POST方法?

如何调用Sencha中RESTful服务的POST方法?,rest,post,sencha-touch,extjs,Rest,Post,Sencha Touch,Extjs,答:问题是我试图使用Ext.Ajax.Request()进行跨域调用 我正在设计一个应用程序,它将向RESTful服务发出http POST和GET请求。该服务已经到位,如果我使用soapUI或Chrome Rest客户端之类的实用程序进行调用,它们就会成功。有人可能会问:“这是一个跨域的电话吗?”我的回答是:我不知道。我可以告诉你,这项服务并不是托管在我自己的计算机上,但是,如果我在我的Chrome浏览器中使用soapUI或Chrome Rest客户端插件,我可以成功地拨打这些电话 但是,如果

答:问题是我试图使用Ext.Ajax.Request()进行跨域调用

我正在设计一个应用程序,它将向RESTful服务发出http POST和GET请求。该服务已经到位,如果我使用soapUI或Chrome Rest客户端之类的实用程序进行调用,它们就会成功。有人可能会问:“这是一个跨域的电话吗?”我的回答是:我不知道。我可以告诉你,这项服务并不是托管在我自己的计算机上,但是,如果我在我的Chrome浏览器中使用soapUI或Chrome Rest客户端插件,我可以成功地拨打这些电话

但是,如果我尝试使用Ext.Ajax.Request()执行这些操作,它们几乎会立即失败


如果我使用Ext.util.JSONP.request(),它将不允许我发布帖子。解决方案是什么?

您可以在Ajax调用中指定请求方法:

new Ext.Ajax.request({ url:'http://foo', method:'POST', ... });
另见:


希望这有帮助。

答案是不可能使用Ext.Ajax.Request()调用不在本地机器/设备上的服务。这称为跨站点/跨域脚本,默认情况下所有浏览器都会阻止它。可以禁用此安全功能,但仅用于开发目的


如果您正在为移动设备开发,我建议您在计算机上使用禁用的浏览器安全性进行开发,然后使用PhoneGap打包应用程序。PhoneGap允许跨域/跨站点脚本编写,因此外部服务的Ext.Ajax.Request()将使用PhoneGap工作。

跨域问题仅适用于JavaScript。任何其他程序(如SOAPUI)都可以愉快地向任何域发出任何类型的请求,因为通常没有此类限制;我只是在尝试使用Ext.util.JSONP.request()时遇到了这个问题。Ajax调用立即失败,这让我觉得它无法访问URL。您是否尝试过使用Firebug或类似工具(如Chrome开发工具)查看请求详细信息?我将在Chrome开发工具中的何处检查请求?在“网络”下的Javascript控制台中,请求的详细信息如下:方法:选项(我不知道为什么),状态:(已取消),键入:undefinedFirebug更好一些,但在Chrome中,它位于网络选项卡下;您可以查看标题、响应等。选项是一种有效的请求方法,但在这种上下文中似乎很奇怪。取消听起来像是客户端的错误,在完全发送请求之前停止了请求。您可以将错误和失败的处理程序添加到ajax调用中,并将它们写入控制台(或警报)。。。也许有一些奇怪的错误,你没有被显示。