2

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

请检查下面是我的 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>";
}

我已经使用警报来查看变量“x”是否正在获取记录值,这很好用。但是当我在下一行中使用相同的,它没有在我的 php.ini 的编辑模式中显示相同的记录。

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

请检查可能是什么问题,或者是否有任何其他方法可以刷新传递记录号的页面。

4

6 回答 6

1

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

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

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

另一方面,您将使用脚本标签获得更好的浏览器支持<script type="text/javascript">

于 2012-05-17T05:49:21.523 回答
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; ?>
于 2012-05-17T05:42:25.477 回答
0

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

window.location=window.location=location.protocol+'//'+location.host+location.pathname+"?get_variables_here";
于 2012-05-17T05:45:04.450 回答
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>";
于 2012-05-17T05:49:45.360 回答
0

试试这个..

echo "<script type='text/javascript'>window.location.href='ecr-detail-edit.php?prs_mode=edit&prs_id='+x;</script>";
于 2012-05-17T06:04:47.857 回答
0

为了成功执行这一行,var x=document.getElementById('prs_rid').value在 PHP 中,应该首先加载 html dom,否则它将给出错误,这可能是这里的问题。

于 2012-05-17T06:09:45.200 回答