2

mysqlテーブルのレコードを編集しているphpスクリプトがあります。レコード番号を渡して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>";
}

アラートを使用して、変数「x」がレコード値を取得しているかどうかを確認しました。これは正常に機能します。しかし、次の行で同じものを使用すると、phpの編集モードで同じレコードが表示されません。

しかし、次のようにブラウザのアドレスバーに同じ行を配置すると、正常に機能します: http ://www.mydomain.com/ecr-detail-edit.php?prs_mode=edit&prs_id=27

何が問題であるか、またはレコード番号を渡してページを更新する他の方法があるかどうかを確認してください。

4

6 に答える 6

1

( MDN window.locationlocation.hrefで指定されているように)ではなく、オブジェクトに属するオブジェクトを使用するだけです。windowdocument

したがって、コードの最後の行は次のようになります。

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

この行を正常に実行するにはvar x=document.getElementById('prs_rid').value、PHPでhtml domを最初にロードする必要があります。そうしないと、エラーが発生します。これがここでの問題である可能性があります。

于 2012-05-17T06:09:45.200 に答える
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。絶対 URL または完全修飾 URL である必要があります。

あなたの場合、絶対は次のようになります。

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 に答える