JQuery Ajax POST在没有发出请求的情况下抛出一个空错误

我有一个函数,可以为任何锚点发出Ajax请求。 请求方法可以是GET或POST。 在这种情况下,我想在不使用表单的情况下进行POST,但是在发送请求之前,Ajax请求会引发错误。 错误的值为“error”,所有错误/失败描述变量均为“”。

function loadPage(url,elem_id,method,data) { ajaxLoading(elem_id); $.ajax({ type: method, url: url, data: data, success:function(data){ $("#"+elem_id).html(data);; }, error:function(request,textStatus,error){ alert(error); } }); } 

当调用该函数时,params就是这些(从js控制台复制):

 data: "partial=yes" elem_id: "page" method: "post" url: "/projects/2/follow" 

如上所述,这是调用loadPage函数的代码。

 $("body").on("click","a.ajax",function(event) { var _elem = getDataElem($(this)); var _method = getRequestMethod($(this)); var _partial = getRequestPartial($(this)); handlers.do_request(event,$(this).attr("href"),_elem, _method, _partial); }); var handlers = (function() { var obj = {}; obj.do_request = function(event,url,elem_id,method,data) { event.preventDefault(); loadPage(url,elem_id,method,data); history.pushState({selector:elem_id,method:method,data:data},null,url); }; }()); 

在Ajax请求失败后,默认情况下会发出请求并响应成功。 在我读过的所有内容中,这似乎是发出POST请求的有效方式(不需要表单)。

我在function上做错了吗? 为什么错误信息为空?

谢谢

编辑:

我一直在想,当函数有效的“表单”中的POST时,当使用serialize函数创建变量“data”时(例如“var data = $(this).serialize();”)。 当我在没有“表单”的情况下发布POST时,“数据”的格式是不是错了? 也许JQuery Ajax函数在发出POST时不接受像“partial = yes”这样的简单字符串作为数据。 有什么想法吗?

我刚刚遇到这个问题,一两个小时后,想到尝试将缓存设置为false。 那为我修好了。

 $.ajax({ url: url, cache: false, type: method }); 

不幸的是,当我再次删除缓存时,我的请求就好像从未出现过问题一样。 似乎设置cache:false会产生“点击”。

那好吧。

尝试:

 function loadPage(url,elem_id,method,dat) { ajaxLoading(elem_id); $.ajax({ type: method, url: url, data: dat, success:function(data){ $("#"+elem_id).html(data);; }, error:function(request,textStatus,error){ alert(error); } }); } 

我想知道你是否遇到了一个使用以关键字命名的变量的问题。 如果这不起作用,请尝试不带参数调用loadPage并对所有ajax参数进行硬编码,以查看是否有效。

无法解决问题,也无法找到原因。 虽然,我找到了一种方法,通过使用隐藏的空表单而不是使用方法’POST’的锚点。 对于表单,该function很好地工作。

谢谢你的回答

只是一个猜测,但在文档中 ,类型参数是全部大写,即'POST'而不是'post'