2012-04-30 20 views
1

私は、MySQLデータベースにデータを挿入するためのクエリを使用して、POST経由で変数をPHPファイルに渡すJavaScript関数を提供しています。AJAX JavaScript関数にPHP変数を動的に渡す

この関数は、MySQLデータベースから吐き出された一連の2000+行に対して "onchange"と呼ばれます。私はこのように、各フォームフィールドに一意の名前/ IDを与えるために、行のIDを使用する:あなたが見ることができるように

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; 
} 

、私は:

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

JavaScript関数は次のようになりますPHP変数をフォームID値の一部として渡そうとしています。しかし、これは機能しません。なぜなら、変数はまだ入力されていない状態で(セクション内で)一度ページに書き込まれるからです。

つまり、私はこのJavaScript関数に、どのようなPHP変数も動的に渡すようにしたいと思います。私はJavaScript関数にPHP変数を渡すことに関する他のスレッドを見てきましたが、JavaScript関数が毎回異なるPHP変数を使用するように変更するような、理にかなっている)。任意の助け

おかげで...

答えて

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> 

私は私が何かを見落としてしまった場合の謝罪ので、一緒に行ったとして、私はこれを書きました。

参照:

+0

あなたが素晴らしいです。ありがとうございます –

+0

実際には、申し訳ありませんが、私は少し失われています...私はフォームをスプールしているので、あなたが私のPHP whileループの中で参照したHTMLを入れました。 IDは実際にフォームに表示されない隠しフィールドを意図しています。だから、私は、入力したい選択メニューに$ AdvertiserSQLResult ['industry']と$ AdvertiserSQLResult ['geolocation']を使用しますか?また、この関数を使用して複数のデータ値(産業と地理位置)を送信するにはどうすればよいですか?もう一度ありがとう –

+0

また、これを私のPHPスクリプト(InsertAdvertiserRelationship2.php)に送ると、私はFirebugでPOST応答を得られません。そのファイルのデータをどのように参照するのですか?再度、感謝します。 –

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でデータを取得した後は、これまで何をしてもかまいません。

関連する問題