[英]jQuery Ajax post to WCF getting bad request
我试图创建一个自动完成框...,我可以使用Fiddler检索适当的JSON,但是在代码中实现时,出现连接错误。 码:
<htm>
<Head>
</head>
<body>
<input type="text" id="txt_search" name="search">
<span id="suggest"></span>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#txt_search").keyup(function()
{
var search;
search = $("#txt_search").val();
if (search.length > 2)
{
// Trigger AJAX request
$.ajax(
{
type: "POST",
contentType: "application/json; charset=utf-8",
url: "*****",
data: { "FirstPartOfName":"Med " },
dataType: "json",
success: function(message) {
if (message.length > 0)
{
alert('It got data back....');
message = "Do you mean: " + message;
$("#suggest").append(message);
}
else
{
alert('Nothing came back....');
}
}
} );
}
else {
// Empty suggestion list
$("#suggest").empty();
}
});
});
</script>
</body>
</html>
我无法提供URL,但是我可以使用Fiddler进行连接进行测试。 我以为WCF可能是个问题,但是我怎样才能用Fiddler正确测试呢?
我不知道这是否是您的主要问题,但是通过将contentType
设置为application/json
,您告诉WCF您正在以JSON序列化格式发送参数,但是当您将本地对象传递给jQuery时那,它将改为URL编码这些参数。 换句话说,您要发送?FirstPartOfName=Med
而不是{"FirstPartOfName":"Med"}
。 有关此的更多信息,请访问: http : //encosia.com/asmx-scriptservice-mistake-invalid-json-primitive/
在这种简单情况下,您可以通过显式发送JSON字符串来解决此问题:
data: '{"FirstPartOfName":"Med"}'
它看起来很相似,但是在导线上却完全不同。
在最简单的情况下,手动构建JSON字符串是足够可行的,但是麻烦。 您还可以使用JSON.stringify来自动根据对象构建字符串 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.