从php脚本问题调用javascript

时间:2012-05-17 05:39:02

标签: php javascript mysql

我有一个php脚本,它在mysql表中编辑记录。我在通过传递记录号码使用javascript刷新页面时遇到了问题。

下面的Pl检查是我的PHP脚本的几行:

if ($mode == "edit")
{
$ids=$_POST[prs_rid];
$edt1=mysql_query("SELECT * FROM ECRDTL_edit WHERE id='$ids'");
$edt2=mysql_fetch_assoc($edt1);

echo "<script>var x=document.getElementById('prs_rid').value</script>";
    echo "<script> alert (x);</script>";
echo "<script>document.location.href='ecr-detail-edit.php?prs_mode=edit&prs_id='+x;</script>";
}

我使用alert来查看变量“x”是否获得记录值,这样可以正常工作。但是当我在下一行中使用相同的内容时,它在我的php的编辑模式中没有显示相同的记录。

但是如果我在这样的浏览器的地址栏中放置相同的行,它可以正常工作:      http://www.mydomain.com/ecr-detail-edit.php?prs_mode=edit&prs_id=27

请检查可能存在的问题,或者是否有其他方式刷新通过记录编号的页面。

6 个答案:

答案 0 :(得分:1)

只需使用(MDN window.location)中指定的location.href对象属于window对象,而不是document

所以你的最后一行代码应该是:

echo "<script>location.href='ecr-detail-edit.php?prs_mode=edit&prs_id='+x;</script>";

另一方面,您将使用脚本标记<script type="text/javascript">

获得更好的浏览器支持

答案 1 :(得分:0)

document.location.href='ecr-detail-edit.php?prs_mode=edit&prs_id='+x;

应该是

location.href='ecr-detail-edit.php?prs_mode=edit&prs_id='+x;

并且您还应该使用mysql_real_escape_string()来逃避用户可能传递给您的脚本的恶意数据。

因此改变

$ids = $_POST['prs_rid']; 

$ids = mysql_real_escape_string($_POST[prs_rid]);

你缺少脚本类型,当你想使用javascript时你需要告诉浏览器所声明的代码是javascript,你需要更改

<script> 

<script type="text/javascript">

您在POST数据中缺少单引号。将单引号添加到以下内容。

$ids = $_POST['prs_rid'];

最后一件事是我永远不会用PHP输出javascript。你保持javascript和PHP不同是更好的。例如,您的上述代码可以更改为。

<?php
if ($mode == "edit"):
    $ids  = mysql_real_escape_string($_POST['prs_rid']);
    $result = mysql_query("SELECT * FROM ECRDTL_edit WHERE id='$ids'") or die(mysql_error());
    $row = mysql_fetch_assoc($result);
?>
<script type="text/javascript">
    var x = document.getElementById('prs_rid').value
    alert(x);
    location.href = 'ecr-detail-edit.php?prs_mode=edit&prs_id='+x;
</script>
<?php endif; ?>

答案 2 :(得分:0)

问题是window.location需要一个绝对的http:// URL。使用以下代码:

window.location=window.location=location.protocol+'//'+location.host+location.pathname+"?get_variables_here";

答案 3 :(得分:0)

相对URL在分配给location.href时不起作用,它应该是绝对的或完全合格的。

在你的情况下,绝对会做:

location.href = location.pathname + '?prs_mode=edit&prs_id=' + 
    encodeURIComponent(x)

location.pathname将路径(以/开头)提供给查询分隔符(问号)。

我还添加了encodeURIComponent(x),以确保在必要时正确转义x的值。

<强>实施

echo "<script>location.href = location.pathname + '?prs_mode=edit&prs_id=' + encodeURIComponent(x);</script>";

答案 4 :(得分:0)

试试这个..

echo "<script type='text/javascript'>window.location.href='ecr-detail-edit.php?prs_mode=edit&prs_id='+x;</script>";

答案 5 :(得分:0)

要在PHP中成功执行此行,var x=document.getElementById('prs_rid').value,首先应加载html dom,否则会产生错误,这可能是此处的问题。