1

私は、MySQL データベースにデータを挿入するためのクエリを使用して、POST 経由で変数を PHP ファイルに渡す JavaScript 関数 (このフォーラムのユーザーが親切に作成を手伝ってくれました) を持っています。

この関数は、MySQL データベースから吐き出される一連の 2000 行以上に対して「onchange」で呼び出されます。行の ID を使用して、次のように各フォーム フィールドに一意の名前/ID を付けます。

echo "=<select name='$AdvertisersSQLResult[id]geolocation' id='$AdvertisersSQLResult[id]geolocation' onchange = 'insertAdvertiser()'>"; 

JavaScript 関数は次のようになります。

function insertAdvertiser() {
var data = $('#<?php echo $AdvertisersSQLResult[id]?>dataid,#<?php echo $AdvertisersSQLResult[id]?>industry,#<?php echo $AdvertisersSQLResult[id]?>geolocation').serialize();
$.post('/database/InsertAdvertiserRelationship2.php', data);
return false;
}

ご覧のとおり、フォーム ID 値の一部として PHP 変数を渡そうとしています。ただし、変数がまだ入力されていない状態で関数が (セクション内で) 1 回ページに書き込まれるため、これは機能しません。

つまり、この JavaScript 関数に動的に渡される PHP 変数を利用させたいと考えています。PHP変数をJavaScript関数に渡すことについて他のスレッドを見てきましたが、JavaScript関数が毎回異なるPHP変数を使用するように変更されるように、これを動的に行う方法についての参照が見つかりません(理にかなっている)。

助けてくれてありがとう...

4

2 に答える 2

1

グローバル JavaScript 変数を作成して、スクリプトで使用できます。

<script type="text/javascript">
   myVariable = <?php echo $x; ?>;
</script>

変数をどこかに保存してから、JavaScript を介してそれらにアクセスできます。

<input type="hidden" class="myVariable" value="<?php echo $x; ?>"

<script type="text/javascript">
   var myVar = $('.myVariable').val();
</script>

JavaScript でデータを取得したら、そのデータでやりたいことが何でもできます。

于 2012-04-30T16:48:57.570 に答える
1

insertAdvertiser()システム上のすべての広告主に対して個別のメソッドが必要になるためです。

それを行うためのより良い方法は、これを行うことです: Javascript:

// This line turns your PHP array into a Javascript object
var advertisers = <?php echo json_encode($AdvertiserSQLResult); ?>; 

function insertAdvertiser(id) {
 $.post('/database/InsertAdvertiserRelationship2.php', advertisers[id]);
}

// Try not to use attributes to bind events, use handlers like this instead.
$(document).ready(function() {
 $('select').on('change', function() {
   // Reads the advertiser id from the data attribute
   insertAdvertiser($(this).data('advertiserid'));
 });
});

HTML:

<select data-advertiserid="<?php echo $AdvertiserSQLResult['id']; ?> class="advertiser-select">...</select>

書きながら書きましたので、見落としがありましたら申し訳ありません。

見る:

于 2012-04-30T16:50:08.400 に答える