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