[英]Error when calling webservice with jquery
我已经读了很多有关jquery的文章,并且我有一个Web服务,在这里我将companyID转换为真实的companyName。 现在,我想用jquery或javascript调用该web服务。 该Web服务位于主机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>
有人能帮我吗?
谢谢
嗯..您在第11行中将成功拼写错误
..并且您可能希望将数据格式化为
data: "sCompanyID=test"
快速浏览此页面上的jQuery API页面,以验证您正在传递服务期望的参数。 看起来您期望带有ASMX服务的SOAP数据包,而jQuery更适合于击中由ASHX文件或WCF服务生成的静态服务。
就像其他人指出的那样,您不能在另一个域上调用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);
}
希望这可以帮助。
您可以向其他服务器发出请求,但前提是该调用使用GET。 由于您要做的只是查找,因此GET请求应该很好。
我认为您使用的data参数不正确,通常是像这样的键值对:
data: {sCompanyID: 'test'}
我相信他们使用您的方式会导致jQuery尝试发布到http://webservice/service.asmx/getCompanyByCompanyID?sCompanyID:blah
.NET Web服务SOAP也不? 我认为jQuery无法解析...
编辑:没关系,没有意识到您将这些作为json数据传递。 谢谢评论者!
您不能对自己以外的主机进行AJAX调用。 如果确实需要执行此操作,请调用自己的服务器,然后使用简单的代理重定向到所需的域。
例如,您可以通过在Web服务器中使用ProxyPass指令来执行此操作:
ProxyPass /service/ http://webservice/service.asmx
ProxyPassReverse /service/ http://webservice/service.asmx
然后,您可以向/ service / getCompanyByCompanyID发出AJAX请求,并将其代理到正确的URL。
使用jQuery Ajax请求时,在定义要在请求中发送的变量时需要使用以下格式:
data: "variableName=variableContent",
你写了:
data: "{'sCompanyID:' + 'test'}"
这不能工作有两个原因:
-您包括了不需要放在大括号中的大括号。
-您使用了分号“:”,而不是等号“ =“。
只要您更改这些,它就应该起作用。
PS:我只是意识到Jeff Fritz已经给了您正确的答案。 他的答案是正确的!
为了从Jquery运行您的Web服务,您应该使用WCF或仅使用常规Web服务,但应在服务的方法中添加[ScriptMethod],并在Webservice描述中添加[ScriptService]。
哇,您刚刚注意到您正在尝试将服务从一台主机调用到另一台主机……那将无法正常工作。 服务应与从其调用页面的页面托管在同一域中。
作为对杰夫回答的答复,正确格式化数据的方法是数据:{key:“ value”}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.