Javascript:Jquery 发布请求未按预期工作
Posted
技术标签:
【中文标题】Javascript:Jquery 发布请求未按预期工作【英文标题】:Javascript: Jquery post requests are not working as expected 【发布时间】:2018-01-08 10:06:00 【问题描述】:我从几个小时以来就没有继续前进,我非常沮丧,因为我找不到我的错和/或对我的失败的误解:
我想调用 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() 函数中的 "alert('hello'); 。
任何想法/提示为什么秒。通话会中断第一个(正在进行的)通话吗?
【问题讨论】:
可能服务器无法处理多个调用并抛出错误?您是否尝试过记录以确认服务器正在返回两个调用的 json 数据? 好点。我会检查这个.... 服务器可以处理多个请求。后端是在 Eclipse 环境中执行的 sevlet(在 tomcat 8 中)。我在其中放了一些调试行 - 两个请求都被接收并且两个响应都被传输。两个响应都已替换为静态字符串 - 因此两个响应相等。 搞笑:我为第一个来电添加了 Thead.sleep (type==0) - 客户端确实收到了秒。作为第一个请求尽快回答 - 但错误保持不变。 检查开发控制台中发布请求的响应(chrome 中的网络选项卡)。它可能有一些帮助。 【参考方案1】:尝试指定content-type和accept-type
【讨论】:
怎么样?被调用的 servlet 会将其设置为: servletResponse.setContentType("application/json");在javascript中它被设置为“'json'” 如果您要使用的内容类型是默认值,则没有理由设置内容类型。【参考方案2】:感谢所有回复。
我找到了。我真是个白痴。在 servlet 中,输出流的变量被声明为“静态”。所以秒。 call 也会修改该流,这会导致并发请求出现问题。
【讨论】:
以上是关于Javascript:Jquery 发布请求未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章