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 发布请求未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 索引未按预期使用

使用 jQuery 将值发布到 api 未按预期工作

jquery parseHTML 未按预期工作

jquery 中的 next() 函数未按预期工作

jQuery DataTables column.width 选项未按预期工作

Jquery UI Datepicker 日历未按预期工作