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

标签 javascript ajax jquery post

我有一个函数可以为任何 anchor 发出 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,当变量“data”是使用序列化函数(例如“var data = $(this).serialize();”)创建时。可能是我在没有“表单”的情况下进行 POST 时“数据”的格式在某种程度上是错误的吗?也许 JQuery Ajax 函数在进行 POST 时不接受像“partial=yes”这样的简单字符串作为数据。对此有什么想法吗?

最佳答案

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

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

不幸的是,当我再次删除缓存时,我的请求就像从来没有遇到过问题一样工作。似乎设置 cache:false 使某些东西“点击”。

好吧。

关于javascript - JQuery Ajax POST 在没有发出请求的情况下抛出一个空错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16182233/

相关文章:

java - Jquery 发布到 Servlet

javascript - 仅在类名 == x 时才加载 ajax

javascript - 访问$(this).next和slideDown

javascript - 在javascript中我们如何识别一个对象是Hash还是Array?

javascript - Spotify API : get random songs

javascript - 当我删除并重新添加 JQuery 事件时,它们会被解除绑定(bind)

javascript - 3 切换表格列排序

Javascript从字符串中提取特定文本的最佳方法

javascript - 如何使用ajax向服务器发送大量数据

PHP、Mysql插入