0

嘿伙计们,我有以下 $.ajax 调用:

$.ajax({
        type: "POST",
        dataType: "json",
        url: '/pcg/popups/getNotes.php',
        data:
        {
            'nameNotes': notes_name.text(),

        },
        success: function(response) {
            $('#notes_body').text(response.the_notes);
            alert(response.the_notes);

        }
)};

现在专注于data: 假设我发送了“BillCosby”。这将被发送到指定的文件,我在该文件中有这个:

$username_notes = $_POST['nameNotes']; 

现在假设我只是让 $username_notes 像这样在 json 中返回......

$returnArray = array( 'the_notes' => $username_notes );

echo json_encode($returnArray);

这将起作用,响应将是 BillCosby。现在,当我尝试使用 PDO 从我的 MySQL 数据库中获取 BillCosby 的值时,它将返回 null ....在显示整个文件的代码之前,我只想明确 PDO 有效完美,如果我给变量 $username_notes 'BillCosby' 的直接值,我会完美地运行数据库,如果我有 $_POST['nameNotes']; 它只会返回 null;在前。

getNotes.php:

$username_notes = $_POST['nameNotes'];

grabNotes($username_notes);



function grabNotes($xusername)
{   
    .....

    $newUser = $xusername;

    try {  
      # MySQL with PDO_MYSQL  
      $DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);  
      $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

    }  
    catch(PDOException $e) { 
        echo "I'm sorry, I'm afraid I can't do that.";  
        file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);   
    }

    $sql = "SELECT notes FROM csvdata WHERE username = :username";
    $getmeminfo = $DBH->prepare($sql);
    $getmeminfo->execute(array(':username' => $newUser));
    $row = $getmeminfo->fetch(PDO::FETCH_ASSOC);
    $notes = $row['notes'];

    $returnArray = array( 'the_notes' => $row['notes'],);

    echo json_encode($returnArray);

    $DBH = null;

}

所以我的问题是,为什么我不能从 PDO 语句中取回返回值?如果我在 $.ajax 文件调用的文件中告诉 PDO 语句名称 - 'BillCosby',它将完美运行。但如果我通过 $_POST 从 $.ajax 获取值,它将不起作用并返回 null。有趣的是我可以返回与发送的相同的值。

谢谢你们的时间!

4

2 回答 2

0

尝试修剪它:

$username_notes = trim( $_POST['nameNotes'] );

有时字符串中的空格会导致这种错误,而且很难发现。

于 2013-02-10T19:00:47.703 回答
0

我经常需要添加?callback=?。因此,您的 JQuery ajax 请求将如下所示:

$.ajax({
    type: "POST",
    dataType: "json",
    url: '/pcg/popups/getNotes.php?callback=?',
    data:
    {
        'nameNotes': notes_name.text(),

    },
    success: function(response) {
        $('#notes_body').text(response.the_notes);
        alert(response.the_notes);

    }
)};

此外,最好使用 jQuery.getJSON 方法。

于 2013-02-10T20:00:17.743 回答