Javascript 如何使ajax请求的行为类似于标准HTTP表单提交

Javascript 如何使ajax请求的行为类似于标准HTTP表单提交,javascript,http,restlet,Javascript,Http,Restlet,这是针对e restlet服务器上的html表示的,这是为了使用PUT和DELETE http谓词来提交表单 <script type="text/javascript"> function submitFormXMLHttpRequest(meth, url, formname){ var xmlhttp; var params; var form = document.getElem

这是针对e restlet服务器上的html表示的,这是为了使用PUT和DELETE http谓词来提交表单

<script type="text/javascript">
            function submitFormXMLHttpRequest(meth, url, formname){

            var xmlhttp;
            var params;
            var form = document.getElementById(formname);
            var fieldcount = form.elements.length;
            if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
              }

            var form = document.getElementById(formname);
            for (i=1; i<=(fieldcount-1); i++) {

                if(form.elements[i].name != "") params = params + form.elements[i].name + "=" + form.elements[i].value + "&";

            }
            //alert(params);
            xmlhttp.open(meth, url+"?"+params, true);
            xmlhttp.send();

            }
    </script>`

函数submitFormXMLHttpRequest(meth、url、formname){
var-xmlhttp;
var参数;
var form=document.getElementById(formname);
var fieldcount=form.elements.length;
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
var form=document.getElementById(formname);

对于(i=1;i,restlet将请求作为Ajax请求处理的事实可能是因为XMLHttpRequest设置了头

为了避免出现这种情况,您可以尝试删除此标题:

if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
    xmlhttp.setRequestHeader("x-requested-with", null);
}
因为通常,它将用“XMLHttpRequest”定义,表示它是一个ajax请求


编辑:我知道使用Play!Framework,您可以强制该方法(PUT&DELETE)通过使用
x-http-method-override=
,这可能非常有用,因为这两种操作在html页面中并不常见。也许你可以在restlet中找到类似的东西?

表单提交和调用此js方法之间的本质区别是什么,我不认为是servlet,它只会查看、url、方法类型&Accept header确定表示形式。因为我编写了服务器,所以我可以确定这一事实。我缺少一些基础知识,因为我一路上都在学习这些知识。当您提交表单时,浏览器会等待服务器响应下一页。而当您调用js xmlhttp.send()时;没有。我不确定是否理解你的评论。我的编辑是一个在Play!框架中工作的替代解决方案。但是,既然你写了你的,显然它不会(如你所说)。现在,大多数框架知道请求是否是AJAX的方法是检查头部请求中是否存在x-requested-with。至少Play!framework&Django是这样工作的。现在,如果您通过url(比如/page/list.json)定义AJAX请求,您必须重新定义逻辑。