这里我向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);
}
答案 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的执行,直到您关闭对话框,然后提交表单并重新加载页面。