从$ .ajax调用中检索参数的问题

嘿家伙,我有以下$ .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']; 

现在让我说我只是在这样的json中返回$ username_notes …

 $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语句中获得返回值? 如果我在PDO语句中告诉$ .ajax文件调用的文件中的名称 – ‘BillCosby’,它将会很完美。 但是如果我从$ .ajax获得$ _POST的值,它将无效并返回null。 有趣的是我可以返回发送的相同值。

谢谢你的时间!

尝试修剪它:

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

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

我经常要添加?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方法。