我正在使用jquery插件datatables,并试图利用fnRender函数来操作一些数据。
我有一个PHP脚本,它从我的$ .post返回一个JSON字符串。以下是我从每篇文章中获得的示例回复:{"description":"myvalue"}
。我是从谷歌Chrome开发者工具中得到的。
这是我的帖子功能:
$.post("functions/getDescription.php", {gpn:oObj.aData[1]},
function(data) {
returnedVal = jQuery.parseJSON(data);
var test = returnedVal.description;
//alert(test);
return test;
});
这是我的php脚本:
$passedVal = mysql_real_escape_string(($_POST['gpn']));
$descriptionPrint = array('description' => "");
include 'db_include.php';
$getDescription = "SELECT part_number_description, description FROM unit_description
WHERE part_number_description = '$passedVal' ";
$result = mysql_query($getDescription,$db) or die(mysql_error($db));
while ($row = mysql_fetch_array($result)) {
extract($row);
$descriptionPrint = $description;
echo json_encode(array('description' => $descriptionPrint));
}
每个查询只返回一个值。
每一行都会提醒正确的值,但返回undefined。
如果我只用字符串的返回值或任何通用值替换javascript函数,它可以正常工作。
我觉得在这一切中我必须有一些愚蠢的东西。非常感谢任何帮助,如果您需要更多信息,请告诉我(我知道对像datatables这样的插件运行的故障排除可能令人沮丧)。感谢。
答案 0 :(得分:3)
因为$.post
没有返回匿名回调函数的返回值,所以你将其作为第三个参数传递给它。
由于Ajax是异步的,$.post
甚至在执行回调函数之前返回。
如果您想在数据从服务器返回时执行某些操作,则回调函数必须执行此操作(或调用其他函数执行此操作)。
这与以下内容不起作用的原因相同:
var were_you_expecting_sunshine = $('button').click(function () {
return "sunshine";
});