Почему эта функция Javascript предупреждает мое значение, но не возвращает то же значение? - PullRequest
0 голосов
/ 31 марта 2012

Я использую плагин jquery datatables и пытаюсь использовать функцию fnRender для манипулирования некоторыми данными.

У меня есть скрипт php, который возвращает строку JSON из моего $ .post.Вот пример ответа, который я получаю от каждого поста: {"description":"myvalue"}.Я получил это из Google Chrome Developer Tools.

Вот моя функция публикации:

$.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));
  }

Есть только одинзначение, возвращаемое из каждого запроса.

Каждая строка выдает предупреждение о правильном значении, но возвращает неопределенное значение.

Если я заменю функцию javascript только на возвращаемое значение строки или любое общее значение, оно будет работать нормально.

Я чувствую, что должно быть что-то глупое, чего мне не хватает во всем этом.Любая помощь очень ценится, и, пожалуйста, дайте мне знать, если вам нужна дополнительная информация (я знаю, что поиск и устранение неисправностей в плагине, например datatables , может быть неприятным).Спасибо.

1 Ответ

3 голосов
/ 31 марта 2012

Поскольку $.post не возвращает возвращаемое значение функции анонимного обратного вызова, которую вы передаете ей в качестве третьего аргумента.

Поскольку Ajax является асинхронным, $.post даже возвращает до того, как будет выполнена функция обратного вызова.

Если вы хотите что-то сделать, когда данные возвращаются с сервера, то функция обратного вызова должна это сделать (или вызвать другую функцию для этого).

Это та же самая причина, по которой следующее не будет работать:

var were_you_expecting_sunshine = $('button').click(function () {
    return "sunshine";
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...