JAVASCRIPT:OK按钮进入另一个.php表单

时间:2013-08-26 07:26:48

标签: php javascript jquery forms

我的保存条目有一个基本的javascript代码。

情境:

我有两种形式,第一种形式[view_netbldg.php]用于我的数据输入,然后当用户点击“ADD”按钮时,它将进入下一个表格[save_netbldg。 PHP。所以在我的save_netbldg.php表单中有一个if else条件,如果$ bldgName或$ netName的变量为空,代码将首先知道。一切都还可以,但我担心的是,当代码检测到两个变量中的任何一个为空时,我正在使用的代码将被执行。

这是我的代码:

if($bldgName == "" || $netName == "")
{
echo "<script type='text/javascript'>\n";
echo "alert('Please complete the fields for Building Name or Network Name');\n";
echo "</script>";
header("location:view_netbdlg.php");
}

*程序的结果是,它没有显示警告而是会跳转到标题

正确的方法是,如果 $ bldgName ==“”|| $ netName ==“” == true ** 提醒将显示,当用户单击确定按钮时,它将进入下一个表单“view_netbdlg.php”。我这里不需要确认消息,因为它只是一个类似的错误消息。

预先感谢你。

4 个答案:

答案 0 :(得分:2)

你将php与javascript混淆,你可以通过

来解决这个问题
if($bldgName == "" || $netName == "")
{
 echo "<script type='text/javascript'>\n";
 echo "alert('Please complete the fields for Building Name or Network Name');\n";
 echo "window.location='view_netbdlg.php';\n";
 echo "</script>";
}

答案 1 :(得分:1)

这是因为当文档加载时,它会在找到脚本标记时停止。

在您的情况下,当您已经加载时,您正试图在文档的未确定部分中回显数据。

这是我的解决方案:

PHP文件(test.php):

<?php
    if(!isset($_POST['bldgName']) || !isset($_POST['netName']) {
        die("false"); //returns false if the values are NOT set
    } else {
        die("true"); //returns true if the values are set
    }
?>

在您的文件(file.html)中:

<form method="post" action="test.php" id="formtest">
    <input type="text" name="bldgName" />
    <input type="text" name="netName" />
</form>
<script type="text/javascript">
if(getAjaxResponse(document.getElementById("formtest") == "true") {
    alert("Please complete the fields for Building Name or Network Name");
    window.navigate("view_netbdlg.php");
}
function getAjaxResponse(frm){
var elem = frm.elements;
var params = "";
url = form.action;
for(var i = 0; i < elem.length; i++){
    if (elem[i].tagName == "SELECT"){
        params += elem[i].name + "=" + encodeURIComponent(elem[i].options[elem[i].selectedIndex].value) + "&";
    } else {
        params += elem[i].name + "=" + encodeURIComponent(elem[i].value) + "&";
    }
} 
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("POST",url,false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(params);
return xmlhttp.responseText;    
}
</script>

答案 2 :(得分:0)

你可以尝试:

if($bldgName == "" || $netName == ""){
    header('Refresh: 10; URL=your url');#10 second delay
    echo "Please complete the fields for Building Name or Network Name";
    exit;#make sure rest of page doesn't render!
}

答案 3 :(得分:0)

您已经在脚本下编写了代码,并且从未调用过该脚本 为此你必须使用函数并手动调用函数...

有关函数调用的更多信息,请参阅

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/Call