为什么这个Javascript函数提醒我的值但不返回相同的值?

时间:2012-03-30 20:13:57

标签: php jquery mysql ajax datatables

我正在使用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这样的插件运行的故障排除可能令人沮丧)。感谢。

1 个答案:

答案 0 :(得分:3)

因为$.post没有返回匿名回调函数的返回值,所以你将其作为第三个参数传递给它。

由于Ajax是异步的,$.post甚至在执行回调函数之前返回

如果您想在数据从服务器返回时执行某些操作,则回调函数必须执行此操作(或调用其他函数执行此操作)。

这与以下内容不起作用的原因相同:

var were_you_expecting_sunshine = $('button').click(function () {
    return "sunshine";
});