目标:
我是如何尝试这样做的:
出于某种原因(对于训练有素的人来说,这可能是显而易见的,也可能是不明显的)我正在遇到一个错误。
注意:数据库连接工作正常,并且无需任何问题即可获取正确的结果。问题是我试图通过PHP执行我的JavaScript的方式100%。我假设php正在查看var
等并正在编译它。
请告知以下代码,如果需要更多细节,我将很乐意扩展:
<?
if (!isset($_COOKIE['authPw'])){
echo '<script>window.location="http://www.google.com"</script>';
}
?>
<html>
<head>
</head>
<body>
<?
function jsEcho($i,$cN,$fN,$lN,$pN,$eM){
$jString="var appObj = new Object();";
$jString+="appObj.id=" + $i + ";";
$jString+="appObj.companyName=\'" + $cN + "\';";
$jString+="appObj.firstName=\'" + $fN + "\';";
$jString+="appObj.lastName=\'" + $lN + "\';";
$jString+="appObj.phoneNumber=\'" + $pN + "\';";
$jString+="appObj.eMail=\'" + $eM + "\';";
//echo "1ONE1".$jString."2TWO2";
return $jString;
}
$host="localhost"; // Host name
$username="abc"; // Mysql username
$password="def"; // Mysql password
$db_name="ghi"; // Database name
$tbl_name="jkl"; // Table name
$link=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$mySQL="select * from ".$tbl_name.";";
echo $mySQL;
$result=mysql_query($mySQL);
$jS="var aApps=new Array();";
while ($row = mysql_fetch_array($result))
{
$iD=$row["id"];
$companyName=$row["companyName"];
$firstName=$row["firstName"];
$lastName=$row["lastName"];
$phone=$row["phone"];
$email=$row["email"];
$jS+=jsEcho($iD,$companyName,$firstName,$lastName,$phone,$email);
}
?>
</body>
<?
echo '<script>';
echo $jS;
echo '</script>';
?>
</html>
答案 0 :(得分:3)
您的脚本在body元素关闭后。这不是有效的HTML。可能它没有被评估。我怀疑输出也是无效的javascript。
此外,您的jsEcho方法冗长,不安全且不必要。使用这种模式:
<?php
// prepare all your data as a single PHP object or array
$jsdata = array();
while ($row = mysql_fetch_object($result)) {
$jsdata[] = $row;
}
// now encode to JSON
$jsenc = json_encode($jsdata);
// now html-escape it
?>
<script>
var allMyData = <?php echo htmlspecialchars($jsenc, ENT_NOQUOTES, 'utf-8')?>;
</script>