我几个小时都没有继续前进,我感到非常沮丧,因为我找不到自己的错误和/或对我失败的误解:
我想通过以下源代码调用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()函数中,这不会发生。
任何想法/暗示为什么秒。通话会扰乱第一个(正在进行的)通话?
答案 0 :(得分:-1)
尝试指定content-type和accept-type
答案 1 :(得分:-1)
感谢所有回复。
我找到了。我是个白痴。在servlet中,输出流的变量被声明为"静态"。所以秒。 call也将修改该流,这会导致并发请求出现问题。