如何将PHP变量值传递给jquery函数?

时间:2011-09-30 13:55:24

标签: php jquery wordpress

我在Wordpress / js文件夹中有这个JQuery脚本,我需要更改我存储在数据库中的一些值。

$( "#slider-range2" ).slider({
    range: true,
    min: 18,
    max: 90,
    values: [ 35, 50 ],
    slide: function( event, ui ) {
        $( "#amount2" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
    }
});
$( "#amount2" ).val( $( "#slider-range2" ).slider( "values", 0 ) + "-" + $( "#slider-range2" ).slider( "values", 1 ) );

Jquery文档对我来说并不清楚。 我需要改变的值是[35,50]。这些值存储在数据库中。 我怎么能从js文件中做到这一点?如何将PHP变量值传递给jquery函数?

感谢。

7 个答案:

答案 0 :(得分:5)

假设您想要保留外部js文件而不是将其嵌入到您的php脚本中,请让php写出两个全局js变量,并修改js文件以使用它们。

e.g。在php:

echo "<script>var val1 = $var1; var val2 = $var2;</script>";

并在你的js文件中:

values: [val1, val2]

<小时/> 但是,如果您可以将js文件更改为php文件,则可以执行以下操作:

<?php header('Content-type: text/javascript'); ?>
... // your regular js code  here
values: <?php echo $var1 ?> , <?php echo $var2 ?>
...

现在,您可以在您的页面上使用:

<script type="text/javascript" src="yourfile.js.php">

答案 1 :(得分:4)

我说你只是这样做:

$( "#slider-range2" ).slider({
    range: true,
    min: 18,
    max: 90,
    values: [ <?php echo $value1; ?>, <?php echo $value2; ?> ],
    slide: function( event, ui ) {
        $( "#amount2" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
  }

});

当然$ value1和$ value2是从数据库中获得的值。

-edit-或其他人说的话,你可以使用php for循环来使你的数组​​大小动态:)

答案 2 :(得分:4)

PHP代码在服务器上运行,jQuery代码在浏览器中运行,因此您无法直接将PHP变量传递给jQuery函数,因为您无法直接从PHP代码中调用 jQuery函数。 / p>

您需要做的是让PHP代码生成JavaScript代码,当它稍后在浏览器中运行时,会将一些JavaScript变量设置为您想要的值。例如,您可以使PHP代码在页面的标题中生成包含JavaScript赋值语句的<script>元素,然后修改您的.js文件,使其代替数字35和50,它指的是那些变数。

您也可以将PHP代码放在.js文件本身中,正如其他答案所暗示的那样,但前提是它实际上是PHP脚本而不是静态文件。我的建议是将大部分JavaScript代码保存在静态文件中(以便浏览器可以缓存它们)并让PHP只生成其他脚本可以引用的一些全局变量的赋值。

答案 3 :(得分:3)

在定义滑块之前,您可以向服务器发出ajax请求。

例如。    var myValues = function(){       //执行ajax调用返回值的php脚本       返回值};

$( "#slider-range2" ).slider({     
   range: true,     
   min: 18,
   max: 90,
   values: myValues(),
   slide: function( event, ui ) {
       $( "#amount2" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
   } 
}); 
$( "#amount2" ).val( $( "#slider-range2" ).slider( "values", 0 ) + "-" + $( "#slider-range2" ).slider( "values", 1 ) ); 

答案 4 :(得分:2)

就像这样回应它。

$( "#slider-range2" ).slider({
    range: true,
    min: 18,
    max: 90,
    values: <?php echo $your_variable ?> ,
    slide: function( event, ui ) {
        $( "#amount2" ).val( ui.values[ 0 ] + "-" + ui.values[ 1 ] );
    }
});

答案 5 :(得分:1)

这取决于价值。如果它是一个简单的数值,你可以回应它。如果它是复杂的或字符串,您可以通过json_encode以JSON格式回显它(因为JSON是JavaScript文字语法的一个子集),因为它将处理转义等等。

请注意,在两种情况下,PHP都在服务器上发生,因为页面请求已满足,并且JavaScript在客户端使用它以后

答案 6 :(得分:0)

我最喜欢的一个技巧是命名你的javascript文件somename.js.php,然后发送一个javascript标题:

Header("content-type: application/x-javascript");

现在,您可以在javascript中使用完整的php功能(包括数据库调用)。

但是,您需要确保使用服务器正确缓存文件,因此不会在每个页面上下载。类似的东西:

header("Expires: Sat, 26 Jul 2012 05:00:00 GMT")

根据经验,我通常会在主php文件中保留任何更改的JS变量,并将它们传递给在外部JS文件中声明的函数。