使用 jquery Ajax 调用 WCF 服务失败,请求响应错误
Calling WCF Service Using jquery Ajax failed with bad request response
使用 jquery-Ajax 调用 wcf web 服务因请求错误而失败,不知道确切的问题。
它甚至不调用任何方法成功或失败。
Web 服务和网站都使用 iis
部署在同一台服务器上
错误:
Failed to load resource: the server responded with a status of 400 (Bad Request)
代码用于调用服务方法:
function test(){
try {
code = getValuesWrittenInTheURL[0] + "";
var query = "select taskstatus,tasksubstatus,Lat,Lng,elementID from tasks_gvt where code = '" + code + "'";
$.ajax({
type: "POST",
async: true,
url: IP + "/GetData",
data: JSON.stringify({ Query: query }),
dataType: "json",
success: function (data) {
debugger;
console.log("data: ",data);
},
failure: function (errMsg) {
debugger;
console.log("err",errMsg);
}
});
} catch (error) {
console.log("alaaError", error.message);
}
}
wcf web服务操作契约:
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, UriTemplate = "GetData", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
Response GetData(String Query);
准备好为您提供更多详细信息。
下面是Ajax我成功接入服务,你可以参考一下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function () {
code = "code";
var query = "select taskstatus,tasksubstatus,Lat,Lng,elementID from tasks_gvt where code = '" + code + "'";
da={"Query":query}
$.ajax({
type: "Post",
dataType: "json",
contentType: "application/json;charset=utf-8",
data: JSON.stringify(da),
url: "http://localhost/Service1.svc/GetData", success: function (result) {
}});
});
});
</script>
</head>
<body>
<button>Call WCF Rest Service</button>
</body>
</html>
你需要设置contentType,我看到你把BodyStyle设置为Wrapped,如果设置为Wrapped,请求格式应该是这样的:
{"Query":query}
使用 jquery-Ajax 调用 wcf web 服务因请求错误而失败,不知道确切的问题。 它甚至不调用任何方法成功或失败。 Web 服务和网站都使用 iis
部署在同一台服务器上错误:
Failed to load resource: the server responded with a status of 400 (Bad Request)
代码用于调用服务方法:
function test(){
try {
code = getValuesWrittenInTheURL[0] + "";
var query = "select taskstatus,tasksubstatus,Lat,Lng,elementID from tasks_gvt where code = '" + code + "'";
$.ajax({
type: "POST",
async: true,
url: IP + "/GetData",
data: JSON.stringify({ Query: query }),
dataType: "json",
success: function (data) {
debugger;
console.log("data: ",data);
},
failure: function (errMsg) {
debugger;
console.log("err",errMsg);
}
});
} catch (error) {
console.log("alaaError", error.message);
}
}
wcf web服务操作契约:
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, UriTemplate = "GetData", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
Response GetData(String Query);
准备好为您提供更多详细信息。
下面是Ajax我成功接入服务,你可以参考一下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function () {
code = "code";
var query = "select taskstatus,tasksubstatus,Lat,Lng,elementID from tasks_gvt where code = '" + code + "'";
da={"Query":query}
$.ajax({
type: "Post",
dataType: "json",
contentType: "application/json;charset=utf-8",
data: JSON.stringify(da),
url: "http://localhost/Service1.svc/GetData", success: function (result) {
}});
});
});
</script>
</head>
<body>
<button>Call WCF Rest Service</button>
</body>
</html>
你需要设置contentType,我看到你把BodyStyle设置为Wrapped,如果设置为Wrapped,请求格式应该是这样的:
{"Query":query}