当我在jQuery中使用Ajax调用向服务器发布JSON数据时,我遇到了问题,该函数没有进入成功模式。当我使用Firefox的POSTER插件发布时,它会成功发布。共享代码段和相同的屏幕截图:
function showSubscribeContent()
{
alert("*1*------- SUB CLICKED");
var myJSONData = '{"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}}';
alert("*2*------- POSTING--------->"+myJSONData);
$('#subscribePage').html('<h1>POSTING...</h1>');
$.ajax({
type: 'POST',
url: 'https://tt.s2.acc.com/tt/subscribe-service/uid=sagar_mate',
data: myJSONData,
dataType: 'application/xml',
success: function(data) {
alert("*3*------- POSTED SUCCESSFULLY TO THE SERVER");
$('#subscribePage').html('<h1>POSTED</h1>');
} // Success Function
}); // Ajax Call
}
我收到提示号码 1 和 2 但不是 3 。
另外,当我使用Firefox的POSTER插件发布时,它很容易发布。
响应成功。
我无法使用AJAX调用发布相同的数据。
谢谢, ANKIT
答案 0 :(得分:1)
除非您的AJAX调用中的URL属于同一个域,否则我认为它不会成功发布。 Firefox的POSTER插件不会对域名施加任何此类限制,但浏览器会对应用程序施加此限制。
尝试检入错误:function(){alert(4);}
查看它是否至少到达错误处理程序
答案 1 :(得分:1)
请清楚你想要什么,当你使用Firefox的POSTER插件时,你指定的数据类型为json,而使用ajax则使用xml。
如果您要将数据发布为JSON,请使用JSON.stringify接受JSON对象并将其转换为字符串。
答案 2 :(得分:1)
尝试使用此代码
function showSubscribeContent()
{
alert("*1*------- SUB CLICKED");
var myJSONData = {"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}};
alert("*2*------- POSTING--------->"+myJSONData);
$('#subscribePage').html('<h1>POSTING...</h1>');
$.ajax({
type: 'POST',
url: 'https://tt.s2.acc.com/tt/subscribe-service/uid=sagar_mate',
data: myJSONData,
dataType: 'application/json',
success: function(data) {
alert("*3*------- POSTED SUCCESSFULLY TO THE SERVER");
$('#subscribePage').html('<h1>POSTED</h1>');
} // Success Function
}); // Ajax Call
}
此处我更改了以下内容
将myJSONData转换为字符串
中的JSON对象var myJSONData = {"data":{"mode" : "subscribe","technologyareas":[1],"assettypes":["podcast","documents"]}};
注意:如果这不适合你,请尝试使用字符串(你的方式)
将datatyle更改为JSON
dataType: 'application/json',
答案 3 :(得分:0)
在beforeSend函数中添加标题对我来说很好。 CORS的安全原因。