Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQueryAjax在直接执行时返回成功,但在连接到按钮时返回错误,即使服务器响应为200 OK_Javascript_Jquery_Ajax_Json_Sails.js - Fatal编程技术网

Javascript jQueryAjax在直接执行时返回成功,但在连接到按钮时返回错误,即使服务器响应为200 OK

Javascript jQueryAjax在直接执行时返回成功,但在连接到按钮时返回错误,即使服务器响应为200 OK,javascript,jquery,ajax,json,sails.js,Javascript,Jquery,Ajax,Json,Sails.js,这在某种程度上与其他类似问题有关: 然而,我的问题似乎不是数据:json问题 我的代码是对服务器的简单POST请求,出于测试目的,它总是返回200 OK 如果我在文档准备就绪后直接运行jquery代码,它就可以正常工作并调用success函数 但是如果我将它附加到onclick按钮事件,它总是返回error函数。服务器上没有任何更改,我可以在控制台上看到正在调用正确的资源 我的主代码位于js文件中: var myObj = function(){ var url = "myURL";

这在某种程度上与其他类似问题有关:

然而,我的问题似乎不是数据:json问题

我的代码是对服务器的简单POST请求,出于测试目的,它总是返回200 OK

如果我在文档准备就绪后直接运行jquery代码,它就可以正常工作并调用success函数

但是如果我将它附加到onclick按钮事件,它总是返回error函数。服务器上没有任何更改,我可以在控制台上看到正在调用正确的资源

我的主代码位于js文件中:

var myObj = function(){
    var url = "myURL";
    this.functionINeed = function(data, cb) {
        ajaxPost(url, data, cb);
    };

    function ajaxPost(url, data, cb){
        $.ajax({
            "url" : url,
            "contentType" : "application/json; charset=UTF-8",
            "data" : data,
            "type" : "POST",
            "success" : function(serverData, textStatus, jqXHR){
                cb(null, {
                    "serverData" : serverData,
                    "textStatus" : textStatus,
                    "jqXHR" : jqXHR
                });
            },
            "error": function (jqXHR, textStatus, errorThrown) {
                cb({
                    "jqXHR" : jqXHR,
                    "textStatus" : textStatus,
                    "errorThrown" : errorThrown
                });
            }
        });
    };
}
//I initialize the object directly on the js file
MyObj = new myObj();
然后,第一个场景:在页面加载时直接调用函数:

var data = {
        "action" : "someaction",
        "code" : "somecode"
    }
    MyObj.functionINeed(JSON.stringify(data), function(err, response){
        if(err){
            alert(err.errorThrown);
            return err;
        }else{
            alert(response.textStatus);
            return response;
        }
    });
这很好:调用服务器,返回内容,JQuery调用success函数

但是,如果我将此代码附加到按钮事件,它总是返回error函数。我正在监视服务器,我确信它返回了正确的数据

$("#myButton").on("click", function(){
    var data = {
        "action" : "someaction",
        "code" : "somecode"
    }
    MyObj.functionINeed(JSON.stringify(data), function(err, response){
        if(err){
            alert(err.errorThrown);
            return err;
        }else{
            alert(response.textStatus);
            return response;
        }
    });
});
根据记录,我的服务器是Node.js和Sails.js,但这似乎并不重要

许多类似的问题在某种程度上都与数据相关:json问题,但我已经删除了它,最奇怪的是,只有在将代码附加到事件时才会发生这种行为

例如,我怀疑在文件上实例化对象时会出现某种范围问题,但每次都正确地调用了服务器。我只是不明白为什么JQuery将所有响应解释为错误和空服务器数据


我做错了什么?

在一个疯狂的下午尝试了各种组合后,一个灯泡熄灭了,我发现问题是我的按钮html在表单中


对我来说,这简直是疯了。在发送ajax查询时,JQuery似乎捕获了比看上去更多的信息,这会因为期望某种表单编码的行为而扰乱响应解析。这是否意味着我的表单中不能有特殊用途的按钮?因为我使用的是Bootstrap,所以这没关系,因为我可以使用a标记进行测试和工作。但这似乎是一个JQuery错误版本:1.11.2

在一个疯狂的下午尝试了各种组合之后,一个灯泡熄灭了,我发现问题是我的按钮html在表单中

对我来说,这简直是疯了。在发送ajax查询时,JQuery似乎捕获了比看上去更多的信息,这会因为期望某种表单编码的行为而扰乱响应解析。这是否意味着我的表单中不能有特殊用途的按钮?因为我使用的是Bootstrap,所以这没关系,因为我可以使用a标记进行测试和工作。但这似乎是一个JQuery错误版本:1.11.2

<form>
    <button></button>
</form>
<div>
    <button></button>
</div>