【问题标题】:using jquery $.post() for returning multiple values使用 jquery $.post() 返回多个值
【发布时间】:2011-01-08 21:49:00
【问题描述】:

我正在尝试通过以下方式使用 $.post():

$.post("file.php", { file_id: $(this).val()}, function(data){...} file.php 然后进行数据库查询并返回一个包含标题、描述和图像参考的数组。

然后我想做的是能够为每个表单字段更新.val()。我了解如何在单个变量上执行此操作,它只是以下内容:

$.post("file.php", { file_id: $(this).val()}, function(data){ 
   $('#title').val(data);
}

但是,如何让返回的数据在 jquery 中可以识别为单独的变量或数组?

提前致谢

【问题讨论】:

    标签: jquery variables .post


    【解决方案1】:

    the docs for $.post。第四个参数是数据类型。您可以将此设置为 JSON,以便将返回数据解析为 JavaScript 对象或数组。

    $.post(
       "file.php", 
       { file_id: $(this).val() }, 
       function(data){ $('#title').val(data.title); $('#para').val(data.paragraph); },
       'json');
    

    在您的 file.php 文件中,您可以执行类似的操作

    <?php
    $return_data=array('title'=>'Fishes Go To Market','paragraph'=>'Lots of stuff');
    
    header('Content-Type: application/json');
    echo json_encode($return_data);
    exit();
    

    确保包含 header() 以便 jQuery 知道您的数据应该是 JSON,并使用 json_encode 使其格式正确。

    请参阅json_encode 文档了解更多信息,以及docs on header。请记住,在 header() 和打印 json_encoded 数据之前不能有任何其他输出,否则标头和 JSON 将无效。

    【讨论】:

    • 完美运行,但我认为您的代码中有错字 ($return_data || $return_array) 谢谢!
    • 糟糕,没错。我会为后代编辑它。很高兴它有帮助!
    【解决方案2】:

    最简单的方法是将值作为 JSON 传回。您需要在服务器上将您的数组转换为 JSON(有很多 server-side libraries available for this)。并修改您的 .post() 方法,通过添加如下第四个参数以 JSON 格式返回数据:

    $.post("file.php", { file_id: $(this).val()}, function(data) { ... }, "json");
    

    然后您可以像这样轻松地填充变量:

    $('#title').val(data.title);
    $('#description').val(data.description);
    

    【讨论】:

      猜你喜欢
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      相关资源
      最近更新 更多