我有一个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
请检查可能存在的问题,或者是否有其他方式刷新通过记录编号的页面。
答案 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,否则会产生错误,这可能是此处的问题。