$ .ajax({...})内的变量;

时间:2012-08-17 13:11:57

标签: php javascript jquery foreach

我有一个foreach循环(php),我希望jquery发布每个$value的数据。
当我创建变量  var description = $('#<?php echo $value;?>').val();
并且alert(description);它工作正常,但当我尝试在$.ajax({.... });内使用时,它只显示第一个值。

为什么?

代码:

$('#edit_<?php echo $bid;?>').click(function(){
<?php 
foreach($Languages as $key => $value){  
?>
        var description = $('#<?php echo $value;?>').val();
        alert(''+description+' - <?php echo $value;?>'); // <-- HERE ir alerts the right value 
        $.ajax({
            url: "sqlx.php",
            data: "description="+ description +"&file=<?php echo $image; ?>&client=<?php echo $client; ?>&kategory=<?php echo $xkatid; ?>&language=<?php echo $value;?>", // <-- in this line it sends only first $value
            type: "post",
            success: function(){
                $('#ok<?php echo $bid;?>').fadeIn(100);
                $('#ok<?php echo $bid;?>').fadeOut(1000);
                window.setTimeout(function() {
                $(".xclose<?php echo $bid;?>").trigger('click');
                }, 800);

            }
        });
<?php } ?>
return false;
    }); 

2 个答案:

答案 0 :(得分:0)

将所有php vars放入javascript vars并在javascript中循环它们,而不是让php一遍又一遍地生成相同的javascript。

答案 1 :(得分:0)

如果您在服务器端循环,则存在重复的var定义(对于description) 你最好在javascript中进行循环

  var bid = <? echo json_encode($bid);?>;
  var server_data = <? echo json_encode($Languages);?>;
  $("#edit_"+bid).click(function(){
      for(var i in server_data){
          var value = server_data[i];
          //here your ajax code enters while you have value and bid variables in the javascript
      }
  });

编辑: 只是注意到你还有image$client等变量 - 你应该应用相同的方法,首先将值作为javascript vars,然后在javascript中使用它们