Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery调用webservice时出错_Javascript_Jquery_Web Services - Fatal编程技术网

Javascript 使用jquery调用webservice时出错

Javascript 使用jquery调用webservice时出错,javascript,jquery,web-services,Javascript,Jquery,Web Services,我读过很多关于jquery的书,我有一个Web服务,在那里我把一个companyID转换成真正的companyName。现在我想用jquery或javascript调用该Web服务。Web服务在我正在处理的主机上。我不工作,总是出错 这是我的密码: <script type="text/javascript" src="http://kmosvi24/_layouts/jquery-1.3.2.min.js"></script> <script type="tex

我读过很多关于jquery的书,我有一个Web服务,在那里我把一个companyID转换成真正的companyName。现在我想用jquery或javascript调用该Web服务。Web服务在我正在处理的主机上。我不工作,总是出错

这是我的密码:

<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行把success拼错了

。。您可能希望将数据格式化为

data: "sCompanyID=test"

快速浏览以验证您正在传递服务期望的参数。看起来您期望的是一个带有ASMX服务的SOAP数据包,而jQuery更适合于访问由ASHX文件或WCF服务生成的restful服务。

嗯。。你在第11行把success拼错了

。。您可能希望将数据格式化为

data: "sCompanyID=test"

快速浏览以验证您正在传递服务期望的参数。看起来您期望的是一个带有ASMX服务的SOAP数据包,而jQuery更适合于访问由ASHX文件或WCF服务生成的restful服务。

为了从jQuery运行web服务,您应该使用WCF或普通web服务,但您应该将[ScriptMethod]添加到服务的方法中并[ScriptService]添加到您的Web服务描述

哇哇 刚刚注意到您正试图从一台主机向另一台主机调用该服务…该主机无法工作。该服务应与调用它的页面位于同一域中


作为对Jeff回答的回答,格式化数据的正确方法是数据:{key:value}

为了从Jquery运行web服务,您应该使用WCF或普通web服务,但您应该将[ScriptMethod]添加到服务的方法中,并将[ScriptService]添加到web服务描述中

哇哇 刚刚注意到您正试图从一台主机向另一台主机调用该服务…该主机无法工作。该服务应与调用它的页面位于同一域中


作为对Jeff回答的回答,格式化数据的正确方法是数据:{key:value}

我认为您没有正确使用数据参数,通常它是一个键值对,如:

data: {sCompanyID: 'test'}
我相信,您使用它的方式会导致jQuery试图发布到

NET web服务不是SOAP吗?我不认为jQuery可以解析它


edit:Nevermind,没有意识到您正在将这些作为json数据传递。谢谢评论!

我认为您没有正确使用数据参数,通常它是一个键值对,如:

data: {sCompanyID: 'test'}
我相信,您使用它的方式会导致jQuery试图发布到

NET web服务不是SOAP吗?我不认为jQuery可以解析它


edit:Nevermind,没有意识到您正在将这些作为json数据传递。感谢评论员!

您不能对您自己的主机以外的主机进行AJAX调用。如果确实需要这样做,请调用您自己的服务器,并使用简单的代理重定向到您需要的域

例如,您可以在Web服务器中使用ProxyPass指令:

ProxyPass         /service/ http://webservice/service.asmx
ProxyPassReverse  /service/ http://webservice/service.asmx

然后,您可以向/service/getCompanyByCompanyID发出AJAX请求,该请求将被代理到正确的URL。

您不能对自己以外的主机进行AJAX调用。如果确实必须这样做,请调用您自己的服务器,并使用简单的代理重定向到您需要的域

例如,您可以在Web服务器中使用ProxyPass指令:

ProxyPass         /service/ http://webservice/service.asmx
ProxyPassReverse  /service/ http://webservice/service.asmx

然后,您可以向/service/getCompanyByCompanyID发出AJAX请求,它将被代理到正确的URL。

正如其他一些人指出的那样,您不能在另一个域上调用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);

}

希望这能有所帮助。

正如其他一些人指出的那样,您不能在另一个域上调用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请求应该可以。

您可以向其他服务器发出请求,但只有在调用使用GET时才可以。因为您所做的一切都是查找,所以GET请求应该可以。

使用jQuery Ajax请求时定义要在请求中发送的变量时,您需要使用以下格式:

data: "variableName=variableContent",
你写道:

 data: "{'sCompanyID:' + 'test'}"
这将不起作用,原因有二: -你已经包括了不需要的花括号。 -您使用了分号:,而不是等号=

只要你改变这些,它就会工作


我才意识到杰夫·弗里茨已经给了你正确的答案。他的回答恰到好处

对于jQuery Ajax请求,在定义请求中要发送的变量时,需要使用以下格式:

data: "variableName=variableContent",
你写道:

 data: "{'sCompanyID:' + 'test'}"
这将不起作用,原因有二: -你已经包括了不需要的花括号。 -您使用了分号:,而不是等号=

只要你改变这些,它就会工作


我才意识到杰夫·弗里茨已经给了你正确的答案。他的回答恰到好处

我应该在哪里将其添加到脚本中?这是一个Apache配置选项。仅仅改变客户端是无法实现这一点的。您自己的域中的服务器上需要一个代理。我在哪里将其添加到脚本中?这是一个Apache配置选项。仅仅改变客户端是无法实现这一点的。您自己的域中的服务器上需要一个代理。数据传递正确,它需要的是json字符串,而不是javascript变量。jquery将自动将其编码为查询字符串。您可以将JSON字符串发送到具有[ScriptService]和[ScriptMethod]的asmx方法,但[ScriptMethod]啊没有意识到它可以做到这一点!已更新答案。数据传递正确,它需要的是json字符串,而不是javascript变量。jquery将自动将其编码为查询字符串。您可以将JSON字符串发送到具有[ScriptService]和[ScriptMethod]的asmx方法,但[ScriptMethod]啊没有意识到它可以做到这一点!更新答案。同意格式化数据,我没有注意到数据类型是JSON。同意格式化数据,我没有注意到数据类型是JSON。我要注意的是,如果结果是JS函数,您只能处理结果。我要注意,如果结果是JS函数,您只能处理结果。