Jquery responseText未定义

时间:2017-02-21 20:39:06

标签: javascript jquery ajax

我遇到了ajax响应问题。我有一个将Json发送到服务器的ajax请求,响应也返回一个json。

我收到回复,但无法联系到responseText。下面是我的代码:

 (require 'messages-are-flowing)
 (add-hook 'message-mode-hook #'messages-are-flowing-use-and-mark-hard-newlines)

问题是我收到以下错误:

  

无法读取未定义

的属性'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); } }); 打印所有响应,如下所示: enter image description here

我google了,我尝试了很多解决方案,但我找不到解决方案

2 个答案:

答案 0 :(得分:0)

我认为您对如何使用$.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
  })
}); 

此外,我并不完全相信您的标题有效。也许其他人可以对此发表评论。

答案 1 :(得分:0)

console.log有一个特例,因为它获得了$.ajax()返回的jqXHR对象的引用。因为它是一个引用,所以DevTools会在某些时候发生以后显示对象(或数组)的内容。

主要问题是,您在使用异常responseText发送请求后,尝试直接访问$.ajax。属性responseText将在请求完成后包含响应的内容。要处理它,您必须使用将在请求成功后执行的回调。 jqXHR对象提供了方法done,该方法将一个functon作为参数,将在请求成功时执行。

以下是您可以执行此操作的示例:

$('#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()的接受选项。