12

HTMLには、データベース内の特定のステータスを持つオブジェクトごとに自動的に作成されるボタンがいくつかあります。各ボタンは独自の ID を取得します。

echo '<Button id="button'.$counter.'" onClick="clickedbutton('.$counter.', '.$row['OrderID'].')" >'."<center>".$row['OrderID']."<br>"."</center>".'</Button>';

ボタンは、JavaScript 関数 clickedbutton を呼び出し、ボタンの番号とそのボタンの orderid を渡します。

function clickedbutton(buttonid,orderid){
buttonid = "button" + buttonid;

}

この関数は、ボタンの番号をロードし、button0、button1 などにします。orderid も正常に渡されます。関数で外部の php スクリプトを呼び出したいのですが、orderid もスクリプトに渡す必要があります。

<?php
    //connect to database
    include_once('mysql_connect.php');

    // Select database
    mysql_select_db("test") or die(mysql_error());

    // SQL query
    $strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + orderid + "'";

    mysql_close();
?>

私はmysqliの保護とすべてについて知っています。後で調整します。ここで、変数 orderid を呼び出して phpscript に渡す方法という上記の質問に焦点を当てたいと思います。

4

5 に答える 5

23

編集 2018

ええ、私はまだ生きています。fetchの代わりに APIを使用できますjQuery。(誰だと思いますか?...) IE 11 以下を除いて広くサポートされていますが、そのためのポリフィルがあります。最新のコーディングをお楽しみください。

フェッチ API のサポート

古い答え

AJAX を使用する必要があります。

Javascript だけでは php スクリプトに到達できません。リクエストを作成し、変数を PHP に渡し、評価して結果を返す必要があります。jQuery を使用している場合、ajaxリクエストを送信するのは非常に簡単です。

$.ajax({
    data: 'orderid=' + your_order_id,
    url: 'url_where_php_is_located.php',
    method: 'POST', // or GET
    success: function(msg) {
        alert(msg);
    }
});

PHPスクリプトは次のような注文IDを取得する必要があります。

echo $_POST['orderid'];

出力は文字列として success 関数に返されます。

編集

次の短縮関数も使用できます。

$.get('target_url', { key: 'value1', key2: 'value2' }).done(function(data) {
    alert(data);
});

// or eventually $.post instead of $.get
于 2013-05-30T10:54:46.353 に答える
1

Ajax を使用する。

function clickedbutton(buttonid,orderid){

    $.post("page.php", { buttonid: buttonid })
    .done(function(data) {
        alert("Data Loaded: " + data);
    });

}

PHP では、$_POST で取得します。

//[..] previous php code
$strSQL = "update orders set OrderStatus = 'In Progress' where OrderID = '" + $_POST['buttonid'] + "'";
//[..] rest of php code

SQL インジェクションに注意してください。このアドバイスをそのまま受け取らないでください。

于 2013-05-30T10:51:44.790 に答える
1

AJAX を使用したくないと仮定すると、clickedbutton関数で次のようなことができます。

window.location.replace('path/to/page.php?orderid=' + orderid);

そして、あなたのpage.phpで

"...where OrderID = '" . $_GET('orderid') . "'";

(文字列を結合するためのドットに注意してください)

于 2013-05-30T10:57:18.000 に答える