jQuery responseText未定义

I have a problem with ajax response. I have an ajax request that sends Json to a server, and the response return a json too.

I receive the response but I can't reach the responseText. Here below there is my code:

$('#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);
  }
});

The problem is that I get the following error:

Cannot read property 'responseText' of undefined

but the console.log(posts) print all the response like this: enter image description here

I googled and I tried many solutions but I can't find the solution

I think you're a bit confused about how to use the $.ajax() method. Try this:

$('#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
  })
}); 

Additionally, I'm not entirely confident that your headers are valid. Maybe someone else can comment on that.

There is a special case with the console.log because it get the reference to the jqXHR object which was returned by $.ajax(). And because it's a reference it can happen some times that the DevTools will show the content of an object (or array) of a later time.

The main problem is that you are trying to access the responseText diretly after sending your request with $.ajax which is asynchronously. The property responseText will contain the content of the response after the request is fulfilled. To handle that you must use a callback which will be executed after the request was successful. The jqXHR object provides the method done which takes a functon as argument which will be executed when the request was successful.

Here is an example how you could do it:

$('#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);
  })
});

Note: I remove the the responseText on the ajax config object because it's not an accepted option for $.ajax().