并提前感谢您帮助我。
我正在尝试发布一个POST,我在URL中传递了TOKEN,我想传递另一个参数,所以我可以将信息保存在数据库中。我有这个:
$("#btnAddCompany").click(function(e) {
var token = "123";
var companyValue = document.getElementById("companyValue").value;
var obj ={CompanyId: 4 ,Name: companyValue }
var postData = JSON.stringify(obj);
console.log(postData);
$.ajax({
type: "POST", //REQUEST TYPE
dataType: "json", //RESPONSE TYPE
contentType: "application/json",
data: postData,
url: "http://banametric.ddns.net/BanaMetricWebServices/BanaSov_WS.svc/CompanySave/"+token,
success: function(data) {
toastr.success("Lidl Adicionado!");
},
error: function(err) {
console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
}
}).always(function(jqXHR, textStatus) {
if (textStatus != "success") {
alert("Error: " + jqXHR.statusText);
}
})
});
但我收到400错误(错误请求)所以我认为我犯了错误,但我不知道是什么。错误跟踪是这样的:
请求中的AJAX错误:{“readyState”:4,“responseText”:“\ r \ n
服务器在处理请求时遇到错误。该 异常消息是'传入消息有一个意外的消息 格式'原始'。该操作的预期消息格式是 'Xml','Json'。这可能是因为WebContentTypeMapper还没有 在绑定上配置。请参阅服务器日志了解更多 细节。异常堆栈跟踪是:
\ r \ nat System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(消息 消息,对象[]参数)\ r \ n在
答案 0 :(得分:1)
由于
而导致错误该操作的预期消息格式为“Xml' Json'”。 所以你可以在你的ajax调用中传递contentType
$.ajax({
....,
contentType: "application/json"
})
答案 1 :(得分:0)
我不确定,但这取决于服务器想要从您那里阅读。
服务器不想读取原始字节,它需要xml或json
尝试添加
等标题beforeSend: function(xhrObj){
xhrObj.setRequestHeader("Content-Type","application/json");
xhrObj.setRequestHeader("Accept","application/json");
},
在$ .ajax()函数中
答案 2 :(得分:0)
您需要在请求中设置内容类型标头,以通知服务器您将数据作为JSON发送。
错误消息告诉您服务器不理解您发送它的内容 - 您必须提示数据是否采用特定格式,特别是因为错误中提到的消息,它允许您以多种不同的格式(在这种情况下为JSON或XML)提交。
添加
contentType: "application/json"
到$ .ajax调用中的选项应该可以解决问题。
P.S。我们无法看到您的控制器方法的签名,但您可能还需要在JSON中为您的参数指定名称,例如像data: JSON.stringify({ "companyValue": postData });
这样的东西,但是你的问题中没有足够的信息来确定正确的结构应该是什么。
答案 3 :(得分:0)
$("body").on("submit", ".example_form", function() {
$.ajax({
url: 'http://example.com/{ROUTE_URL}',
data: new FormData(this),
processData: false,
contentType: false,
/* OR contentType: "application/json; charset=utf-8"*/
type: 'POST',
dataType: "json",
success: function(data) {
console.log(data);
}
});
});
答案 4 :(得分:-1)
而不是这个
var postData = JSON.stringify(companyValue);
你为什么不试试这个:
var obj ={token :token ,companyValue:companyValue }
然后使用json stringify函数
var postData = JSON.stringify(obj);
之后在ajax调用中只更改了url:
url: "http://webservice/CompanySave/"