Javascript Jquery响应文本未定义

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

我对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 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”