我有一个对任何锚点发出 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);
}
});
}
当函数被调用时,参数是这些(从 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 请求的有效方式(不需要表单)。
我在函数中做错了吗?为什么错误信息为空?
谢谢
编辑:
我一直在想,对于来自“表单”的 POST,当使用序列化函数(例如“var data = $(this).serialize();”)创建变量“数据”时,该函数可以工作。当我在没有“表单”的情况下进行 POST 时,“数据”的格式是否可能在某种程度上是错误的?也许 JQuery Ajax 函数在进行 POST 时不接受像“partial=yes”这样的简单字符串作为数据。对此有什么想法吗?