如何通过Ajax将数据从PHP变量发送到JavaScript?

时间:2010-12-22 14:27:09

标签: php javascript ajax

以下代码是否正确?

 $.ajax( {
             url: './ajax/ajax_addTerms.php',
             type: 'POST',
             data: {"fId" : $fId, "term" : $term, "alias" : $alias,
 "userId" : <?php  print $userId; ?>},

当我删除PHP标签时,它可以正常工作,但这样做却没有。

4 个答案:

答案 0 :(得分:5)

包裹这样的值:

 "userId" : "<?php  print $userId; ?>"}

否则JS会尝试解析错误的PHP输出。

答案 1 :(得分:2)

 $.ajax( {
             url: './ajax/ajax_addTerms.php',
             type: 'POST',
             data: {"fId" : <?php echo $fId ?>, "term" : "<?php echo $term ?>", "alias" : "<?php echo $alias ?>",
 "userId" : <?php echo $userId; ?>},
 // echo is faster than print
 // and I assume $fId and $userId are integers so quotes aren't required

PHP的解释器将解析变量,然后 JS完成其余的工作。

答案 2 :(得分:1)

JavaScript是客户端,PHP是服务器端。 Ajax的工作原理如下,

JavaScript HTTP请求 - &gt; PHP - &gt;返回由Ajax处理程序捕获的请求。

您无法从服务器端启动Ajax。

答案 3 :(得分:1)

我会json_encode另外使用<?php ?>来确保“在字符串中正确转义:

data: {"fId" : <?php echo json_encode($fId); ?>, "term" : <?php echo json_encode($term) ?>, "alias" : <?php echo json_encode($alias); ?>, "userId" : <?php echo $userId; ?>},

这样,你也可以传递一个数组:

<?php $data = array('fId' => $fId, 'term' => $term, 'alias' => $alias, 'userId' => $userId); ?>
...
data: <?php echo json_encode($data); ?>, // Same result as above