$(".loadingPnl").removeClass('hdn');
var siteurlA = window.location.protocol + "//" + window.location.host + _spPageContextInfo.siteServerRelativeUrl;
var callUrl = siteurlA + "/_layouts/15/SynchronyFinancial.Intranet/CreateMySite.aspx/SaveAvailableFavoriteItem";
var linkName = $('.txtLinkName').val();
linkName = linkName.replace("'","\'");
$.ajax({
type: "POST",
url: callUrl,
data: "{'linkName': '" + linkName + "', 'webSiteUrl':'" + $('.txtWebAddress').val() + "','iconId':'" + $(".ddlIcons").val() + "'}",
contentType: "application/json; charset=utf-8",
processData: false,
dataType: "json",
success: function (response) {
return true;
},
error: function (response) {
return true;
}
});
return true;
}
答案 0 :(得分:4)
问题是您自己构建JSON作为请求参数。此外,您正在构建invalid JSON(JSON属性名称始终带有双引号("
))。
相反,传递一个对象并让jQuery负责如何发送它 - 如果你传递它而不是字符串服务器可以解决它。如果确实想要自己做,您也可以将对象传递给JSON.stringify
。
var payload = {
linkName: linkName,
webSiteUrl: $('.txtWebAddress').val(),
iconId: $(".ddlIcons").val()
};
$.ajax({
type: "POST",
url: callUrl,
data: JSON.stringify(payload), // or just payload
contentType: "application/json; charset=utf-8",
processData: false, // if you just pass payload, remove this
dataType: "json"
// you had two `return`s here, but they wouldn't work, make sure
// you understand why
// http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call
});
答案 1 :(得分:0)
您可以改为发送JSON。如果你想要String,也可以使用 JSON.stringify 。
{
'linkName' : linkName,
'webSiteUrl' : $('.txtWebAddress').val(),
'iconId' : $(".ddlIcons").val()
}
答案 2 :(得分:0)
不要自己创建JSON字符串,也不要使用JSON.stringify()。
自己创建JSON字符串的问题是为JavaScript正确地转义字符串(这可能很棘手)。 see Special Characters
JSON.stringify的问题是我发现它比XMLHttpRequest更慢,这很奇怪,因为我认为它在幕后使用JSON.stringify。
XMLHttpRequest正在为您处理此问题。如果你只是将对象作为数据传递,那么XMLHttRequest就可以解决问题。
$.ajax({
type: "POST",
url: callUrl,
data: {'linkName': linkName,
'webSiteUrl': $('.txtWebAddress').val(),
'iconId': $(".ddlIcons").val()
},
contentType: "application/json; charset=utf-8",
processData: false,
dataType: "json",
success: function (response) {
return true;
},
error: function (response) {
return true;
}
});