我有一个休息网址,我需要发布一些JSON数据,它会给出一个响应,如下面的截图
现在我需要使用$ http或$ .ajax在我的应用程序中使用它。我使用$ .ajax,如下所示
var postdata = {} //whole jsonobject which is der in above screenshot
$.ajax({
url: "http://10.11.13.153:8081/fro?assettype=00000000-0000-0000-0000-000000031026",
type: 'post',
data: postdata,
dataType: 'json',
success: function (data) {
console.log("response ",JSON.stringify(data));
}
});
但是为此,我得到200回复,但我没有看到成功功能中的回应得到了安慰。
在网络标签中,我看到以下回复
terms%5Bitems%5D%5B0%5D%5B_type%5D=term&terms%5Bitems%5D%5B0%5D%5B_id%5D=6662c0f2.e1b1ec6c.1mdln1e8h.0ibdeqc.s1nm3u.vbt90ta1civ5asp5qetu5&terms%5Bitems%5D%5B0%5D%5B_url%5D=https%3A%2F%2F10.11.13.155%3A9445%2Fibm%2Fiis%2Figc%2F%23dossierView%2F6662c0f2.e1b1ec6c.1mdln1e8h.0ibdeqc.s1nm3u.vbt90ta1civ5asp5qetu5&terms%5Bitems%5D%5B0%5D%5B_name%5D=Export_02
不是JSON格式,不是预期的。
以下是N / w标签中标题的屏幕截图
在我的请求标题中,为什么我会看到form-urlencoded类型?
我明白这是默认的。然后如何更改并使其成为application / json?
同样作为尝试而不是JSON作为数据类型,我改为
datatype:'html'
然后这次我得到与上面相同的回复,但这次它在成功功能中得到了安慰。为什么这样?这里可以做什么来获得JSON格式的预期响应。或者需要在服务器端添加的任何标头。请帮助或想法
答案 0 :(得分:1)
反之,dataType
不控制data
的类型;它告诉jQuery你希望获得什么类型的数据返回。 contentType
告诉jQuery你发送什么类型的数据。 (参见the documentation。)当你设置contentType
时,由你决定你给jQuery的确是那种格式。
因此,在您的情况下,您需要设置contentType
并对对象进行字符串化(请参阅***
行):
var postdata = {} //whole jsonobject which is der in above screenshot
$.ajax({
url: "http://10.11.13.153:8081/fro?assettype=00000000-0000-0000-0000-000000031026",
type: 'post',
data: JSON.stringify(postdata), // ***
contentType: 'json', // ***
success: function (data) {
console.log("response ",JSON.stringify(data));
}
});
(我还根据您使用success
的评论更改了responsedata
的内容,只有与该问题无关的拼写错误。)
如果您还期待JSON,请确保响应具有正确的Content-Type
标头。 (或者,作为第二类选项,指定dataType: "json"
告诉jQuery它是JSON,无论服务器说什么。)