Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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/6/ant/2.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 Jquery即兴函数运行顺序问题_Javascript_Jquery - Fatal编程技术网

Javascript Jquery即兴函数运行顺序问题

Javascript Jquery即兴函数运行顺序问题,javascript,jquery,Javascript,Jquery,我有一个使用$.prompt Jquery(即兴)插件的函数。这很好,只是每当我调用函数时,它都会在调用它的函数的末尾运行 这里是函数 function addfile(){ var txt = '<?php echo $JSString; ?>'; function mycallbackform(v,m,f){ if(v != undefined) var newText = f.alertName + " , " + f.ale

我有一个使用$.prompt Jquery(即兴)插件的函数。这很好,只是每当我调用函数时,它都会在调用它的函数的末尾运行

这里是函数

function addfile(){

    var txt = '<?php echo $JSString; ?>';

    function mycallbackform(v,m,f){
        if(v != undefined)
        var newText = f.alertName + " , " + f.alertName.replace("-", " ").replace(".php", "");
        alert(newText);
    }

    $.prompt(txt,{
        callback: mycallbackform,
        buttons: { Add: 'add', Cancel: 'cancel' }
    });
}
。。。将执行以下操作

  • 提示-‘之前’
  • 提示-‘之后’
  • addfile()
    无论我做什么,addfile()总是最后运行,这让我很困惑。我对这些东西很陌生,所以如果我做了一些非常愚蠢的事情,请不要害怕指出。

    子注:函数位于我的php文件头中,因此
    可以工作。我已经删除了php并将该函数插入到外部JS文件中,但同样的问题仍然存在,因此引起问题的似乎是$.prompt,而不是JS



    关于如何让这个JS正常工作的任何想法都非常受欢迎。
    非常感谢

    您的提示函数是异步的,这就是它接受回调函数作为参数的原因

    试试这个:

    prompt(
        txt,
        {callback: function() {
            addfile();
            prompt("after");
        }}
    );
    

    上述方法不起作用。下面是代码部分。在阻止页面之前显示警报。我正在使用
    blockUI

    function blockPage(){
        $.blockUI({
            message: "<img src='loading.gif'/>",
            color: 'transparent',
            backgroundcolor: '#777777',
            top: $(window).height()/2
        });
        return true;
    }
    
    function dosomethingelse(){
        var aa;
        var bb;
        alert("c");
    }
    
    function createOverlay(){
        var overlaySubmit = function(e,v,m,f){
            if(v === -1){
                alert("Closing the prompt");
                $.prompt.close();
                return false;
            } else if(v === 1){
                dosomethingelse();
                //blockPage();
                return false;
            }
        };
        var prompt = $.prompt(
            "This is a test prompt", 
            {
                opacity: 0.3,
                buttons: {Add: 1, Cancel: -1},
                position: {x: 300},
                prefix: 'jqi',
                submit: function(e,v,m,f){
                    blockPage();
                    try{
                        alert(g);
                    } catch (err){
                        alert("here");
                    }
                    overlaySubmit(e,v,m,f);
                }
            });
        prompt.bind('promptsubmit',blockPage);
    }
    <!-- Ajax-->
    $('#ajax').click(function(){
        $.ajaxSetup({async:false});
        $.ajax({
                url: "test-server.txt",
                success: function(response){
                    createOverlay();
                    return false;
                },
                error: function(){
                    return false;
                }
        });
    });
    
    函数块页(){
    $.blockUI({
    消息:“”,
    颜色:'透明',
    背景颜色:“#777777”,
    顶部:$(窗口).height()/2
    });
    返回true;
    }
    函数dosomethingelse(){
    var aa;
    var-bb;
    警报(“c”);
    }
    函数createOverlay(){
    var overlaySubmit=函数(e,v,m,f){
    如果(v==-1){
    警报(“关闭提示”);
    $.prompt.close();
    返回false;
    }else if(v==1){
    dosomethingelse();
    //blockPage();
    返回false;
    }
    };
    var prompt=$.prompt(
    “这是一个测试提示”,
    {
    不透明度:0.3,
    按钮:{添加:1,取消:-1},
    位置:{x:300},
    前缀:“jqi”,
    提交:功能(e、v、m、f){
    blockPage();
    试一试{
    警报(g);
    }捕捉(错误){
    警报(“此处”);
    }
    上覆submit(e,v,m,f);
    }
    });
    prompt.bind('promptsubmit',blockPage);
    }
    $('#ajax')。单击(函数(){
    $.ajaxSetup({async:false});
    $.ajax({
    url:“test server.txt”,
    成功:功能(响应){
    createOverlay();
    返回false;
    },
    错误:函数(){
    返回false;
    }
    });
    });
    
    function blockPage(){
        $.blockUI({
            message: "<img src='loading.gif'/>",
            color: 'transparent',
            backgroundcolor: '#777777',
            top: $(window).height()/2
        });
        return true;
    }
    
    function dosomethingelse(){
        var aa;
        var bb;
        alert("c");
    }
    
    function createOverlay(){
        var overlaySubmit = function(e,v,m,f){
            if(v === -1){
                alert("Closing the prompt");
                $.prompt.close();
                return false;
            } else if(v === 1){
                dosomethingelse();
                //blockPage();
                return false;
            }
        };
        var prompt = $.prompt(
            "This is a test prompt", 
            {
                opacity: 0.3,
                buttons: {Add: 1, Cancel: -1},
                position: {x: 300},
                prefix: 'jqi',
                submit: function(e,v,m,f){
                    blockPage();
                    try{
                        alert(g);
                    } catch (err){
                        alert("here");
                    }
                    overlaySubmit(e,v,m,f);
                }
            });
        prompt.bind('promptsubmit',blockPage);
    }
    <!-- Ajax-->
    $('#ajax').click(function(){
        $.ajaxSetup({async:false});
        $.ajax({
                url: "test-server.txt",
                success: function(response){
                    createOverlay();
                    return false;
                },
                error: function(){
                    return false;
                }
        });
    });