繁体   English   中英

使用jQuery调用Web服务时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM