【问题标题】:"PUT" request gets sent via AJAX, but no data component transferred“PUT”请求通过 AJAX 发送,但没有传输数据组件
【发布时间】:2012-09-28 15:58:08
【问题描述】:

通过 AJAX,您应该支持“PUT”和“DELETE”请求。我有一个通过“PUT”请求发送数据的表单,服务器确认它但没有发送任何参数。 “删除”请求也会出现同样的结果。如果我改为“发布”,它工作正常。 IE 9、Firefox 和 Chrome 都产生相同的结果。正在发送 put 和 delete 请求,但没有数据。

$("#startButton").click(function(){
                $.ajax({url:"http://localhost:8084/Project/servlet",
                    data:parseFormData("simulatorForm"),
                    cache: "false",
                    dataType: "text",
                    contentType: "application/x-www-form-urlencoded",                
                    type:"put",
                    error:function(xhr){alert(xhr.status + xhr.statusText);} });
            });

注意:如果我改为“发布”,则效果很好。我的表单中的所有参数都会被传输。我在 IE、Chrome 和 Mozilla Firefox 中尝试过。

我尝试在纯 javascript 中执行此操作,但得到完全相同的结果。

var xmlhttp=new XMLHttpRequest();
           xmlhttp.open("PUT","http://localhost:8084/UtilityDashboard/SensorSimulator",true);
           xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
           xmlhttp.send(parseFormData("simulatorForm"));

【问题讨论】:

  • getpost mehtod 有什么问题
  • @Archer 这个问题是关于通过表单提交请求的。鉴于用户发布的答案,这应该是可行的。 XMLHTTPRequest 被认为是常规表单提交的解决方法。
  • @jhonraymos 没什么,但如果它有效,它在服务器端会更整洁。我正在使用apache tomcat。使用 post 进行更新和创建意味着向同一方法添加更多 if 语句。
  • 能否也提供parseFormData()?其他一切看起来都很好。

标签: javascript ajax jquery


【解决方案1】:

您使用的是什么网络服务器?关于 PUT/DELETE 请求的特别说明:

默认情况下,IIS 6 不支持 PUT 和 DELETE 动词。要启用此功能,您需要向应用程序的虚拟目录添加通配符映射,这就像单击站点中通配符应用程序映射或 IIS 管理器中的虚拟目录属性旁边的插入按钮并输入 aspnet_isapi 的路径一样简单。 dll。

【讨论】:

  • 我正在使用 apache tomcat。它支持 PUT 和 Delete。使用这些请求调用 put 和 delete 处理程序,但数据为空白。
  • 刚刚检查了我的浏览器请求。数据正在流出,所以这一定是服务器端问题。
  • 好消息。当服务器问题得到解决时,您应该添加评论。或者至少我认为这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2021-06-06
  • 2012-03-13
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
相关资源
最近更新 更多