【问题标题】:How to echo php array in javascript?如何在javascript中回显php数组?
【发布时间】:2012-03-06 01:46:51
【问题描述】:

我有一个由服务器端代码生成的 php 数组。在用户从我的下拉菜单中选择一个选项后,我想在我的输入字段中显示数组值。请看我的代码:

$(document).ready(function(){
$('select[name="job_number"]').change (function () {
    var selectedVal = $(this).val();
    var test="<?php echo $JNarray['selectedVal'];?>"; //where the problem is
    $('input[name="project"]').val(test);  
//I want show value1 to value 3 in my input field when user picks 
//an option from my dropdown menu. 

});

<?php 
   $JNarray['job1']=value1;
   $JNarray['job2']=value2;
   $JNarray['job3']=value3;
?>

<form action='project_manager' method='post'>
<input type='text' name='project' value='show value1 to value3 when user picks an option' />
<select name='job_number'>
<option value='job1'>job1</option>
<option value='job2'>job2</option>
<option value='job3'>job3</option>
</select>

</form>

有什么想法吗?感谢您的帮助!

【问题讨论】:

  • 实际的错误/问题是什么?你从来没提过。

标签: php jquery arrays forms


【解决方案1】:

这是一种更简洁的方法,无需将数组设置为变量。使用 jQuery 通过 $.data() 读取的数据属性

HTML:

  <option value='job1' data-job-val="<? echo $arrayvalue ?>">job1</option>

JS:

$('select[name="job_number"]').change (function () {
    var test=$(this).find('option:selected').data('job-val');
    $('input[name="project"]').val(test);
});

【讨论】:

  • 非常感谢!我喜欢你的回答。每天学习新东西。
  • 如果你看看 jQuery mobile...整个框架由各种各样的数据属性驱动,从主题到页面描述
【解决方案2】:

虽然,我不推荐在 js 中回显 php...

var test=JSON.parse(<?php echo json_encode($JNarray['selectedVal']);?>); //where the problem is

【讨论】:

  • 我收到一条错误消息,提示未定义变量 $JNarry。是不是因为 javascript 试图获取在页面生成之前由 php 创建的数组? +1 虽然。
  • Javascript应该不知道$JNarray
【解决方案3】:
<select name='job_number'>
<option value='<?php echo $JNarray['job1'] ?>'>job1</option>
...
...
</select>

<script>
$(document).ready(function(){
$('select[name="job_number"]').change (function () {
    $('input[name="project"]').val($(this).val()); 
});
</script>

类似的东西。

【讨论】:

  • 我喜欢你的方式。非常感谢! +1
【解决方案4】:
  1. 您必须先声明并填​​充您的数组,然后才能在 jquery 代码上使用它。将您的 &lt;?php ?&gt; 代码移到顶部。

  2. 然后按照 Trevor 的建议,使用 JSON 将整个 php 数组传递给 javascript:

    $(document).ready(function(){
        var options = JSON.parse(<?php echo json_encode($JNarray);?>);
        $('select[name="job_number"]').change (function () {
            var selectedVal = $(this).val();
            var test=options[selectedVal]; //where the problem was
            $('input[name="project"]').val(test);  
        });
    });
    

【讨论】:

    【解决方案5】:

    我同意特雷弗的观点,但请尝试

    "<?php echo $JNarray['"+selectedVal+"'];?>"
    

    回显 PHP 意味着您从 PHP 文件调用您的 JS,这不是一个好方法老兄!,我唯一会通过的可能是 BASE_URL 或 FILE_UPLOAD_TYPE/SIZE,即使这些都是 ewwwwwy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      相关资源
      最近更新 更多