我已经阅读了很多关于jquery的内容,并且我有一个web服务,我将companyID转换为真正的companyName。现在我想用jquery或javascript调用该webservice。网络服务在主机http://webservice/service.asmx上,我正在http://tlmos上工作。我不工作,我总是收到错误
这是我的代码:
<script type="text/javascript" src="http://kmosvi24/_layouts/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
var test = "KBEACDNV";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://webservice/service.asmx/getCompanyByCompanyID",
data: "{'sCompanyID:' + 'test'}",
dataType: "json",
succes:function(response){ alert("good"); },
error: function(response) { alert("Uh oh"); },
complete: function(response) { alert("" + response); }
});
</script>
有人可以帮助我吗?
THX
答案 0 :(得分:6)
..您可能希望将数据格式化为
data: "sCompanyID=test"
快速浏览jQuery API page on this one以验证您是否传递了服务所需的参数。看起来您期望使用ASMX服务的SOAP数据包,并且jQuery更适合于访问从ASHX文件或WCF服务生成的restful服务。
答案 1 :(得分:2)
正如其他人指出你不能在另一个域上调用web服务,但是当你使用ASP.NET时,你可以编写一个原始的HTTP处理程序(通常带有.ashx扩展名来代理你从客户端到服务器的请求) 。)您将哪个放在“timos”服务器上
所以在您的ashx文件中,您可以按照......
的方式编写一些内容public void ProcessRequest (HttpContext context)
{
XmlDocument wsResponse = new XmlDocument();
string url = "http://webservice/service.asmx/getCompanyByCompanyID?CompanyID="
context.Request.Form["CompanyID"].ToString()
wsResponse.Load(url);
string XMLDocument = wsResponse.InnerXml;
context.Response.ContentType = "text/xml";
context.Response.Write(XMLDocument);
}
希望这有帮助。
答案 2 :(得分:2)
您可以向其他服务器发出请求,但前提是该呼叫使用GET。因为你所做的一切都是查找,所以GET请求应该没问题。
答案 3 :(得分:1)
我认为你没有正确使用数据参数,通常它是一个键值对,如:
data: {sCompanyID: 'test'}
我相信他们使用它的方式会导致jQuery尝试发布到http://webservice/service.asmx/getCompanyByCompanyID?sCompanyID:blah
也不是.NET Web服务SOAP?我不认为jQuery可以解析那个......
编辑没关系,没想到你把这些作为json数据传递。谢谢评论者!
答案 4 :(得分:1)
您不能对自己以外的主机进行AJAX调用。如果您真的必须这样做,请拨打您自己的服务器并使用简单的代理重定向到您需要的域。
您可以通过在网络服务器中使用ProxyPass指令来执行此操作:
ProxyPass /service/ http://webservice/service.asmx
ProxyPassReverse /service/ http://webservice/service.asmx
然后你可以向/ service / getCompanyByCompanyID发出一个AJAX请求,它将被代理到正确的URL。
答案 5 :(得分:0)
为了从Jquery运行您的Web服务,您应该使用WCF或通常的Web服务,但是您应该将[ScriptMethod]添加到服务的方法中,并将[ScriptService]添加到您的Web服务描述中。
哇哇哇 刚刚注意到你正试图从一个主机到另一个主机调用该服务......那个服务无效。 service应该托管在与调用它的页面相同的域中。作为对Jeff回答的回复,格式化数据的正确方法是数据:{key:“value”}
答案 6 :(得分:0)
使用jQuery Ajax请求时,在定义要在请求中发送的变量时需要使用以下格式:
data: "variableName=variableContent",
您写道:
data: "{'sCompanyID:' + 'test'}"
这不会有两个原因:
- 你已经包括了不需要在那里的花括号
- 您使用了分号“:”而不是等号“=”。
只要你改变这些就行了。
P.S我才刚刚意识到Jeff Fritz已经给你正确答案了。他的回答很明显!