jquery按钮单击事件后,php脚本的响应消失

时间:2014-07-03 03:45:09

标签: javascript php jquery

这里我向PHP脚本发布了一个变量。来自php脚本的回复我正在写一些div。但按下按钮后,响应立即消失:

当我alert(arabic);时,它会显示,但当我关闭提示时,它会消失。

为什么在从php脚本响应后重新加载页面?

    $( "#submit" ).click(function() {    
            var cat = $("#cats option:selected").html();    
//          alert(test);    
            var arabic = document.getElementById("arabic").value;    
            //alert (arabic)    
            dataInsert(arabic);    
            });    
        function dataInsert(arabic)    
        {                   
            var xmlhttp;    
            //alert("hi");    
            show.innerHTML = '';    
            if (window.XMLHttpRequest)    
            {    
                // code for IE7+, Firefox, Chrome, Opera, Safari    
                xmlhttp=new XMLHttpRequest();    
            }    
            else    
            {    
                // code for IE6, IE5    
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");    
            }               
            xmlhttp.onreadystatechange=function()    
            {    
                //document.getElementById("old-records").innerHTML = "";                    
                if (xmlhttp.readyState == 4 && xmlhttp.status==200)    
                {    
                    var div2 = document.getElementById("show");    
                                div2.innerHTML = xmlhttp.responseText;    
                }    
            }         
            xmlhttp.open("POST","koove_insertpost_db.php");                 
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");    
            xmlhttp.send('arabic=' + arabic ) ;             
            //alert(arabic);    
        }           

2 个答案:

答案 0 :(得分:2)

看起来您的按钮正在尝试提交内容,从而重叠您的回调函数。您可能希望使用parameter event来阻止它的传播。

检查此代码:

$( "#submit" ).click(function(event) {

    event.stopPropagation();

    var cat = $("#cats option:selected").html();    
    //alert("test");    
    var arabic = document.getElementById("arabic").value;    
    //alert (arabic)    
    dataInsert(arabic);

    return false;

    });    
}

您在回调函数结束时should also return false,以便在您的指示后完全停止处理事件。这是在不中断的情况下执行dataInsert()函数的关键。

答案 1 :(得分:0)

您使用的是jQuery吗?用$(“#submit”).click(function(){})看起来像它;   为什么不让生活变得简单而只是使用

$( "#submit" ).click(function() { 

   var arabic = $("#arabic").value(); 

    $.post("koove_insertpost_db.php",{"arabic" : arabic}, function( data ) { 
        $('#show').html(data);
    });
});

http://api.jquery.com/jquery.post/

您还可以检查成功状态等,以便从服务器验证数据。

我无法评论,所以我相信@feijones有答案! (特别是返回false;)

P.S。警报有效,因为它会暂停JavaScript的执行,直到您关闭对话框,然后提交表单并重新加载页面。