如何在javascript中处理PHP变量

时间:2014-07-15 18:35:35

标签: javascript php jquery

我有这个查询(Javascript)函数,它每次更改选择菜单时都会更改输入值。我从php变量中带来了值。 (参见示例)。对于option中的每个select,我都会插入一个从1到n的值,如下所示:

$i = 0;
foreach($videos as $val)
{
    echo '<option value='.$i.'>'.$val->title.'</option>';
    $i++;
}

所以我的想法是我带着JQuery的选项值,我想在我在Javascript中使用的PHP表达式中使用,我想知道在这种情况下如何将javascript变量放在PHP表达式中(参见我的示例PHP { {1}}正好这个表达式,它是一个javascript变量,其余的是PHP)

echo $videos [ii] ->title;

由于

7 个答案:

答案 0 :(得分:0)

在将变量插入jquery语句之前,创建一个新变量并为其赋予PHP值。 (我还没试过你的例子,但我认为如果你这样试试你会有更多的运气)     var whatever =“”; 然后将任何内容插入到jquery中。 如果你需要使用php创建javascript变量,构造一个语句来使用PHP编写javascript,将其写入javascript文件并将其包含在页面中。

答案 1 :(得分:0)

在你的例子中,严格来说,你是在Javascript中使用PHP变量。

您正在做的是:您使用PHP来输出 Javascript,并在该输出中使用PHP变量。

PHP是服务器端,HTML和Javascript(以及其他任何东西)的结果输出将被传输到浏览器(客户端),在那里它将被解析/执行。

但是:在客户端,没有PHP。您不能在客户端创建的任何PHP代码中使用Javascript变量。

您可以做的是:在对服务器端(PHP)脚本的请求中使用Javascript变量,您可以使用标准表单提交或类似Ajax的方法。在这种情况下,您将使用Javascript变量作为请求参数请求执行服务器端脚本。然后可以在客户端再次使用PHP脚本的输出...在页面刷新之后或(当使用Ajax时)在您当前所在的同一页面上。

答案 2 :(得分:0)

您无法以您描述的方式将JavaScript值发送到php。您可以使用ajax将javascript值发送到服务器,对其进行评估并获得响应。

另一种方法是添加一个数据属性,如下所示:

<div id="somediv" data-value="..." >

然后

使用带有

的jQuery检索它
$('#somediv').attr('data-value') ;

  $('#somediv').data('value') ;

答案 3 :(得分:0)

当你执行javascript和php时,我不确定你是否真的理解。

因为这条线真的不是一个:

$( "#titre" ).val("<?php echo $videos[ii]->title; ?>");

Javascript根本不知道php。在服务器端,php创建一个html文件,然后加载javascript。

当javascript在客户端执行时,再也没有php了。您的浏览器不执行php,它是执行此操作的服务器。

然后,如果要在页面加载后执行php脚本,则必须使用ajax进程。 如果我修改你的代码,它更像是:

$('select').change(function(){

    var i =  $( "#select option:selected" ).val();
    var ii = parseInt(i,10);

    $.ajax({
                        type: 'POST',
                        url: 'get_video_title.php',
                        data: {idVideo:ii},
                        dataType: 'json',
                        success: function (data) {
                            $("#titre").val(data);
                        }
                });

});

答案 4 :(得分:0)

正如评论中提到的,你不能使用javascript变量来操纵php代码。这是因为当javascript运行时,页面已经通过php解析器运行并传递给浏览器。

你可以做三件事

  1. 由于您只是使用与选项文本相同的数据,因此将其设置为选项的值并使用.val()进行检索,如果您不需要其他$videos数组
  2. 的部分内容
  3. 让php回显您的数据,以便javascript引擎对其进行解释,如果您还需要访问代码中其他地方的$videos数据
  4. 向服务器发出ajax请求以获取所需的值(在这种特殊情况下,这将是对服务器的所有请求,只是为了获取每个请求的单个数据)
  5. 更改选项值以反映标题文字

    echo '<option value='.$val->title.'>'.$val->title.'</option>';
    

    JS

    $( "#titre" ).val($(this).val());
    

    动态javascript

    <script>
       //output a json string which javascript will
       //then interpret as a object/array literal
       var data = <?php echo json_encode($videos);?>;
    
       //...   
       $('select').change(function(){
          var i =  $( "#select option:selected" ).val();
          var ii = parseInt(i,10);
    
          //use the data variable appropriately 
          $( "#titre" ).val(data[ii].title);
       });
    </script>
    

    使用ajax请求

    someScript.php

    <?php
        $data = $_POST['somedata'];
    
        //some processing to get the appropriate return value
        //based on $data
    
       //if output is supposed to be an array/object
       echo json_encode($output);
    
       //or if it is supposed to be text etc
       echo $output;
    

    JS

    $('select').change(function(){
      var i =  $( "#select option:selected" ).val();
      var ii = parseInt(i,10);
    
      $.ajax({
         url:"someScript.php",
         type:"POST",
         data:{
            somedata:33
         }
         //can set datatype or remove and let jquery 
         //parse based on mime type 
         dataType:"text"
      }).success(function(data){
         //gonna assume data is just text
         $( "#titre" ).val(data);
      });
    });
    

答案 5 :(得分:0)

使用您的代码并使用$( "#select option:selected" ).text()获取标题:

$('#select').change(function(){
    var i =  $( "#select option:selected" ).val();

    $( "#titre" ).text($( "#select option:selected" ).text());
});

JS Fiddle Demo

答案 6 :(得分:-4)

您无法在PHP中使用Javascript变量。他们是完全不同的系统。