Javascript:Jquery发布请求未按预期工作

时间:2017-08-01 13:40:07

标签: jquery json ajax post tomcat8

我几个小时都没有继续前进,我感到非常沮丧,因为我找不到自己的错误和/或对我失败的误解:

我想通过以下源代码调用json数据的后端:

 function dosomething(type)  
 {
     $.post( "dosomethingontheserver", {type}, function( myjson ) { 
       // do something usefull with myjson data   
    }, 'json' )
   .done(function() {
     // just ignore  
   })    
   .fail( function(xhr, textStatus, errorThrown) {      
      console.log(xhr.statusText);
      console.log(textStatus);
      console.log(errorThrown);
      console.log("type "+type);       
   })   
   .always(function() {
     // alert( "finished for type="+type );   
   });  }

如果通过以下方式调用此代码:

dosomething(0);
一切都很好。但如果我这样称呼两次:

dosomething(0);
dosomething(1);

我在控制台上获得以下内容:

  

SyntaxError:JSON.parse:第1行第1列的意外数据结尾   JSON数据       堆栈跟踪:       jQuery.parseJSON@code.jquery.com/jquery-1.12.4.js:9011:10       ajaxConvert@code.jquery.com/jquery-1.12.4.js:9335:19       done@de.jquery.com/jquery-1.12.4.js:9789:15       callback@code.jquery.com/jquery-1.12.4.js:10311:8

似乎第一个请求被来自第二个的调用取消,并且响应不再是(不再)json格式。服务器总是返回一个json格式 - 所以服务器端没有错误。如果我花费一些额外的时间 - 例如“警告('你好');在dosomething()函数中,这不会发生。

任何想法/暗示为什么秒。通话会扰乱第一个(正在进行的)通话?

2 个答案:

答案 0 :(得分:-1)

尝试指定content-type和accept-type

答案 1 :(得分:-1)

感谢所有回复。

我找到了。我是个白痴。在servlet中,输出流的变量被声明为"静态"。所以秒。 call也将修改该流,这会导致并发请求出现问题。