1

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

设想:

我有两个表单,第一个表单 [view_netbldg.php] 用于我的数据输入,然后当用户单击“添加”按钮时,它将进入下一个表单 [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

4 回答 4

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>";
}
于 2013-08-26T07:36:40.887 回答
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>
于 2013-08-26T07:51:27.727 回答
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!
}
于 2013-08-26T07:35:03.650 回答
0

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

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

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

于 2013-08-26T07:35:10.053 回答