【问题标题】:JQuery and PHP : add data to multiple divs in one AJAX callJQuery 和 PHP:在一次 AJAX 调用中将数据添加到多个 div
【发布时间】:2015-06-24 18:12:13
【问题描述】:

我有一个 HTML 表单,其中有一些复选框。在此表单下方,有一个 id="area1" 的空 div 和一个 id="area2" 的空 div。它们将填充 PHP 函数返回的数据(实际上,到目前为止,仅填充了 #area1)。

为此,我首先使用 jQuery 检索复选框的值(从 1 到 n):

var value1 = $('#mybox1').prop('checked');
...
var valuen = $('#myboxn').prop('checked');

然后我使用 AJAX 调用将“valueX”变量传递给我的 PHP 脚本:

$.ajax({
        type: "GET",
        url: "process_function.php",
        data: { checkbox1 : value1 ... checkboxn : valuen},
        success: function(data){ 

        //add to div "area1" the retrieved data                     

        $('#area1').html(data);

        })

按下按钮时触发 AJAX 调用。

然后 process_function.php 分析数据,并在必要时调用位于 function.php 文件中的其他函数。这些函数总能呼应一些东西。

一切正常,但问题是结果被连接到同一个 div :#area1 !

所以我想知道我是否可以选择向哪个 DIV 添加给定数据。也就是说,在同一个 AJAX 调用中,是否有一种“优雅”的方式,如果选中 value1,则将一些数据添加到#area1,如果选中 value2,则将其他数据添加到 #area2,如果两个值都添加到两个区域被检查了,只有一个 PHP 函数?

到目前为止,我唯一的想法是创建一个 jQuery 函数来测试 value1 是否被选中,然后调用 process_function1.php,以此类推其他值。但它增加了 PHP 函数。

谢谢

【问题讨论】:

  • 返回 JSON。解析、冲洗、起泡、重复。
  • 无论我在下面的回答如何,我都同意@JayBlanchard。不过,我猜对一个略有不同的问题的答案略有不同!
  • 不,同样的答案。如果添加了复选框并且正确解析了 JSON,则 OP 可以将这些值添加到多个内容区域。一种技术,多种选择。
  • 我完全同意@JayBlanchard,但我的意思是我不认为 OP 完全知道 JSON 是什么,如何返回它,以及如何解析它!因此我的意思是我们可能正在引导 OP 开始一个稍微不同的问题我如何在 PHP 中返回 JSON,然后在 jQuery 中解析 JSON
  • 啊哈@RobSchmuecker...我明白了!

标签: php jquery html ajax


【解决方案1】:

您可以让您的 PHP 脚本返回一个 JSON 对象,jQuery $.ajax 方法会自动将其转换为 Javascript 对象。

PHP

<?PHP

// example data. The key values will become part of the jscript object //
$data = ["div1" => "blahblahblah", "div2" => "<i>Something</i>"];

// need this for it to be recognized by jQuery as JSON
header('Content-Type: application/json'); 

echo json_encode($data);

Javascript

$.ajax({...}).done(function(data){
    $("#area1").html(data.div1);
    $("#area2").html(data.div2);
});

【讨论】:

  • 我必须更改我编写的一些代码,但它似乎工作正常!非常感谢
【解决方案2】:
<?PHP

// example data. The key values will become part of the jscript object //
$data = ["area1" => "blahblahblah", "area2" => "<i>Something</i>"];

// need this for it to be recognized by jQuery as JSON
header('Content-Type: application/json'); 

echo json_encode($data);

jQuery 代码

    $.ajax({...}).done(function(data){
       $.each(data, function(key, value) {
          $("#"+key).html(value);
    });

});

你也可以使用这个更动态的代码。

【讨论】:

  • 因为 $data 要由几个函数填充,最好的解决方案是什么?将其用作全局变量?
猜你喜欢
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多