jquery ajax 调用webservice 带参数时出错,弄了几天还没好,帮忙解决一下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery ajax 调用webservice 带参数时出错,弄了几天还没好,帮忙解决一下相关的知识,希望对你有一定的参考价值。

出错提示如下:
System.InvalidOperationException: 请求格式无效: application/json;charset=utf-8。 在 System.Web.Services.Protocols.HttpServerProtocol.ReadParameters() 在 System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
$.ajax(
type:"post",
contentType:"application/json;charset=utf-8",
url:"CheckRemoveClass.asmx/CheckClass1",
data:"username:abcd",
dataType:"xml",
success:function(result)
alert($(result).find("string").text());
,
error:function(e)

$("#cw").html(e.responseText);

);
webservice:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class CheckRemoveClass1 : System.Web.Services.WebService


[WebMethod]
public string CheckClass1(string username)


return "hello " + username;


以上例子不带参数没问题,一带参数就出现提示错误!

参考技术A $.ajax(
type: "post",
contentType: "application/json",
url: "../WebRequest/S_aaa.asmx/helloword",
data: "code:'"+Code+"'",
dataType: "json",
success: function(result)
alert(result.d);
,
error: function(event, XMLHttpRequest, ajaxOptions, thrownError)


);
这两个参数你自己不会看吗?
data: "code:'"+Code+"'",
dataType: "json",
参考技术B post去过的data是怎么写的?
这样格式的试试
data: "userName:'" + userName + "',pw:'" + pw+"'"
没见具体代码不好说

data:"username:abcd", 改成
data:"\"username\":\"abcd\"", 这个没问题,我就是这样用的
或者data:"username:‘abcd’",
直接abcd肯定有问题本回答被提问者采纳
参考技术C 感觉以下两个已经够具体了 参考技术D 参数值加个单引号试试

ajax如何调用java写的webservices服务

要代码!

没办法直接调用的,服务要对其开放接口信息,对其暴露出去,要不然ajax是找不到这个服务的,你要在ajax和webservices服务中间的通信层面加一个配置,接收请求----》映射到对应的服务接口,这一层是少不了的只要是web项目追问

我知道怎么做了用JavaScript SOAP Client可以实现
谢谢!

参考技术A 引入Jquery<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
调用
$.ajax(
type: "post", //以post方式提交
url : "webservices服务地址",
data: 参数:值,……,
success: function(json)//成功
……

);
这样也可以追问

url : "webservices服务地址",
这后面应该还跟方法名称吧?
但是不行,我测试过了

追答

里面还有个dataType类型,定义返回的类型。如:jsonp(json格式的)等,你是调用没有成功?还是返回解释不出来?

追问

一般的ajax调用你这样做是没问题的。
我找的办法了。谢谢

参考技术B <%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<script type="text/javascript"src="js/prototype-1.6.0.3.js"></script>
<script type="text/javascript"src="js/my.js"></script>
<script type="text/javascript">
function getXhr()
var xhr = null;
if(window.XMLHttpRequest)
//非ie浏览器
xhr = new XMLHttpRequest();
else
//ie浏览器
xhr = new ActiveXObject('Microsoft.XMLHttp');

return xhr;

function change(value)
var xhr= getXhr();
xhr.open('post','city.do',true);
xhr.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
xhr.onreadystatechange=function
if(xhr.readystate==4)
var txt=responseText;
var arr=txt.split(';');
$'s2'.innerHTML='';
for( i=0;i<arr.length;i++)
var arr1=arr[i];
var arr2=arr1.split(',');
var obj=new Option(arr2[1],arr2[0]);
$'s2'.options[i]=obj;




;
xhr.send('name='+value);


</script>

</head>
<body>
<select style="color:red;font-size:30px;width:120px"onchange="change(this.value)">
<option value="ah">安徽</option>
<option value="bj">北京</option>
</select>
<select id="s2"style="width:120px;"></select>
</body>
</html>

在js代码中有ajax对象追问

'city.do'?
不是ajax调用action,然后action调用webservices服务。
是直接中ajax调用webservices服务

追答

额……我不太懂你想要什么……

追问

嘿嘿!没事,我找到解决办法了,谢谢

以上是关于jquery ajax 调用webservice 带参数时出错,弄了几天还没好,帮忙解决一下的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net Webservice - 使用 jquery AJAX 安全调用 Web 服务

ajax如何调用java写的webservices服务

使用 jQuery/Ajax 从 JavaScript 调用 WCF/JSON/REST WebService

jquery ajax怎么调用java写的webservice.求高手

jquery ajax 调用webservice 带参数时出错,弄了几天还没好,帮忙解决一下

jquery ajax 访问webservice 报错:500 Internal Server Error