Javascript Jquery响应文本未定义
我对ajax响应有问题。我有一个向服务器发送Json的ajax请求,响应也返回Json 我收到了回复,但无法联系到responseText。下面是我的代码:Javascript Jquery响应文本未定义,javascript,jquery,ajax,Javascript,Jquery,Ajax,我对ajax响应有问题。我有一个向服务器发送Json的ajax请求,响应也返回Json 我收到了回复,但无法联系到responseText。下面是我的代码: $('#outside').click(function() { var formData = '{"nin":"3","etype":"iso","perror":"1000","filename":"C:/Users/Mary/workspace/tdiclient/helloworld.txt"}'// _ sono i due
$('#outside').click(function() {
var formData = '{"nin":"3","etype":"iso","perror":"1000","filename":"C:/Users/Mary/workspace/tdiclient/helloworld.txt"}'// _ sono i due punti e -e il bckslash
var response = '';
var posts= $.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
'url' : 'http://localhost:8080/com.tdi/rest/tdi/newcontent/parameters',
'type' : 'POST',
'data' : formData,
responseText: {
success: true,
mode: "Online"
}
})
console.log(posts);
if(posts.readyState == '1'){
alert(posts.responseText);
}
});
问题是我得到了以下错误:
无法读取未定义的属性“responseText”
但是console.log(posts)
像这样打印所有响应:
我在谷歌上搜索并尝试了许多解决方案,但我找不到解决方案。我想您对如何使用
$.ajax()
方法有点困惑。试试这个:
$('#outside').click(function() {
var formData = '{"nin":"3","etype":"iso","perror":"1000","filename":"C:/Users/Mary/workspace/tdiclient/helloworld.txt"}'// _ sono i due punti e -e il bckslash
var response = '';
var posts = $.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
'url' : 'http://localhost:8080/com.tdi/rest/tdi/newcontent/parameters',
'type' : 'POST',
'data' : formData
})
posts.done(function(res){
console.log(res) // res should be your responseText
})
});
此外,我并不完全相信您的标题是有效的。也许其他人可以对此发表评论。console.log有一个特殊情况,因为它获取了对jqXHR对象的引用,该对象由
$.ajax()返回。
。因为它是一个引用,所以有时候DevTools会显示稍后的对象(或数组)的内容
主要问题是,在使用异步的$.ajax
发送请求后,您试图直接访问responseText
。满足请求后,属性responseText
将包含响应的内容。要处理这个问题,您必须使用一个回调,该回调将在请求成功后执行。jqXHR对象提供方法done
,该方法将函数作为参数,请求成功时将执行该参数
下面是一个示例,您可以这样做:
$('#outside').click(function() {
var formData = '{"nin":"3","etype":"iso","perror":"1000","filename":"C:/Users/Mary/workspace/tdiclient/helloworld.txt"}'// _ sono i due punti e -e il bckslash
var response = '';
var posts= $.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
'url' : 'http://localhost:8080/com.tdi/rest/tdi/newcontent/parameters',
'type' : 'POST',
'data' : formData
})
posts.done(function (data) {
console.log(data);
alert(data);
})
});
注意:我删除了ajax配置对象上的responseText,因为它不是
$.ajax()
的一个可接受的选项。您似乎在混合本机XHR对象和JQuery包装器。为什么要在代码中定义responseText
,而不是设置一个“succes”回调函数来访问它?可能重复@mary:根据您提供的代码示例,应该没有错误。$.ajax()
方法将对象返回到posts
,因此posts.responseText
不会产生该错误。当然,它可能没有您想要的数据……虽然我没有使用jQuery,但我也没有看到在发出请求时设置responseText
属性的任何文档。我尝试了此操作,但从未在控制台上打印任何内容。我也尝试了使用属性success/always/error,并且总是打印“undefined”