将PHP变量动态传递给AJAX JavaScript函数

时间:2012-04-30 16:41:26

标签: php javascript ajax forms variables

我有一个JavaScript函数(这个论坛上的用户慷慨地帮助我构建),它通过POST将变量传递给PHP文件,并带有用于将数据插入MySQL数据库的查询。

对于从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;
}

如您所见,我正在尝试将PHP变量作为表单id值的一部分传递。但是,这不起作用,因为函数被写入页面一次(在部分中)而没有填充任何变量。

换句话说,我想让这个JavaScript函数利用动态传递给它的任何PHP变量。我已经查看了有关将PHP变量传递给JavaScript函数的其他线程,但我找不到任何关于如何动态完成此操作的引用,这样JavaScript函数每次都会更改为使用不同的PHP变量(如果是有道理)。

感谢您的帮助......

2 个答案:

答案 0 :(得分: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获取数据后,您可以按照自己的意愿执行操作。

答案 1 :(得分: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>

我写这篇文章的时候,如果我忽视了某些事情,我就这么道歉。

请参阅: