Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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和作用域问题_Javascript_Ajax_Button_Scope_Click - Fatal编程技术网

JavaScript和作用域问题

JavaScript和作用域问题,javascript,ajax,button,scope,click,Javascript,Ajax,Button,Scope,Click,我在用jquery调用ajax请求时遇到了一个问题。 我这样做的顺序是: 点击按钮 做ajax帖子吗 当ajax请求完成时,我调用一个超出范围的函数 出于某种原因,我认为这与我在点击回调中加载函数超出范围有关。但是我甚至没有看到console.log消息。但我确实看到了ajax调用 有什么想法吗?也许我做得不对 以下是与我所尝试的类似的原型代码: $(document).ready(function(){ $('#button').on('click',function(evt

我在用jquery调用ajax请求时遇到了一个问题。 我这样做的顺序是:

  • 点击按钮
  • 做ajax帖子吗
  • 当ajax请求完成时,我调用一个超出范围的函数
  • 出于某种原因,我认为这与我在点击回调中加载函数超出范围有关。但是我甚至没有看到console.log消息。但我确实看到了ajax调用

    有什么想法吗?也许我做得不对

    以下是与我所尝试的类似的原型代码:

    $(document).ready(function(){
    
            $('#button').on('click',function(evt){
                var data = {};
    
                ajax('index.html', data).done(function(){
                    console.log('Fire Please'); // this does not fire after the ajax call!!!
                        load(); // this does not fire after the ajax call!!!
    
                });
            });
    
            function load(){
                // do another ajax call and add to the dom
            }
    
            function ajax(url, data){
                return $.ajax({
                    url: url,
                    type: 'post',
                    dataType: 'json',
                    data: data
                });
            }
    });
    
    这是我试图使用的实际代码

    $(文档).ready(函数(){

    //将onclick事件添加到添加单元按钮
    addUnitButt.on('click',函数(evt){
    风险值数据={
    id:id,
    部门号:部门号val(),
    部门:部门val()
    };
    evt.preventDefault();
    部门val(“”);
    部门编号val(“”);
    $(this.prop('disabled',true);
    ajax('index.html',data).done(函数(){
    加载();
    });
    });
    函数加载(){
    风险值数据={
    身份证号码:575
    };
    //显示加载
    showLoading();
    //重置表dom
    $(“#listTable”).find(“tr:gt(0)”.remove();
    //执行列表数据的初始加载
    ajax('index.html',数据)
    .完成(功能(单位){
    var数据=toJSONObject(单位);
    对于(var x=0;x
    }))

    提前谢谢

    必须调用
    .always()

    确保您的服务器响应具有正确的标题,如
    Content-Type
    。并且响应主体是有效的JSON。

    。必须调用always()


    确保您的服务器响应具有正确的标题,如
    Content-Type
    。并且响应主体是有效的JSON。

    可能index.html的代码是无效的JSON

    可能index.html的代码是无效的JSON

    范围很好。XHR请求是否显示成功响应?是的。我可以看到电话接通并返回200。实际上,我可以通过刷新页面看到添加的数据,记录就在那里,但只有在我刷新页面之后。就像刷新dom的load函数没有启动一样,代码乍一看很好。我注意到您没有发布任何数据,但您提到数据正在保存,这是您用于测试的确切代码还是变体?(因为这个变量可能有问题)这个代码示例很好,如果ajax如您所说的那样成功,那么您可以将代码发布到出现问题的地方吗?我正在学习:$.ajax不会因为
    数据类型:'JSON'
    ,而将响应(index.html)作为JSON字符串进行评估,这不会失败吗?范围很好。XHR请求是否显示成功响应?是的。我可以看到电话接通并返回200。实际上,我可以通过刷新页面看到添加的数据,记录就在那里,但只有在我刷新页面之后。就像刷新dom的load函数没有启动一样,代码乍一看很好。我注意到您没有发布任何数据,但您提到数据正在保存,这是您用于测试的确切代码还是变体?(因为这个变体可能会有问题)如果ajax如您所说成功,那么这个代码示例就可以了,那么您可以将代码发布到出现问题的地方吗?我正在学习:$.ajax不会因为
    数据类型:“JSON”
    ,而将响应(index.html)作为JSON字符串进行评估吗,,这不会失败吗?很高兴得到最好的答案很高兴得到最好的答案
        // add onclick event to the Add Unit Button
    addUnitButt.on('click', function(evt){
        var data = {
            id: id,
            dept_no: dept_no.val(),
            dept: dept.val()
        };
    
        evt.preventDefault();
    
        dept.val('');
        dept_no.val('');
        $(this).prop('disabled', true);
    
    
        ajax('index.html', data).done(function(){
            load();
        });
    
    });
    
    function load(){
        var data = {
            id: 575
        };
    
        // show loading
        showLoading();
    
        // reset the table dom
        $("#listTable").find("tr:gt(0)").remove();
    
        // do initial load of the list data
        ajax('index.html', data)
        .done(function(units){
            var data = toJSONObject(units);
    
            for(var x = 0; x < data.length; x++){
                if((x & 1) == 0){
                    addRow(data[x], data.length, 'odd');
                }else{
                    addRow(data[x], data.length, 'even');
                }
            }
    
            // hide loading
            hideLoading();
        });
    }
    
    // ajax function to call for data
    function ajax(url, data){
        return $.ajax({
            type: 'POST',
            data: data,
            dataType: 'json',
            url: url
        });
    }