2011-01-08 93 views
3

我试图以如下方式使用$。员额():

$.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中的任一单独的变量或为数组可识别?

在此先感谢

回答

7

the docs for $.post。第四个参数是dataType。您可以将其设置为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(); 

一定要包括头(),所以jQuery的知道你的数据应该是JSON,并json_encode所以使用它格式正确。

查看json_encode文档了解更多信息,以及docs on header。记住你不能有任何其他输出在你的header()和打印json_encoded数据之前出现,否则头和JSON都是无效的。

+0

完美工作,但我认为你的代码有一个错字($ return_data || $ return_array)谢谢! – TH1981 2011-01-08 22:15:45

3

最简单的方法是将值作为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);