从 $.ajax 调用中检索参数的问题
Posted
技术标签:
【中文标题】从 $.ajax 调用中检索参数的问题【英文标题】:Issue with retrieving a parameter from a $.ajax call 【发布时间】:2013-01-25 21:59:00 【问题描述】:大家好,我有以下 $.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。有趣的是我可以返回与发送的相同的值。
感谢你们的时间!
【问题讨论】:
你使用$username
很奇怪。它甚至看起来像是在遮蔽另一个变量
检查更新我改了...
尝试修剪它 -> $username_notes = trim( $_POST['nameNotes'] );
Issue with running a PDO statement from a $.ajax call 的可能重复项
修剪效果如何?
【参考方案1】:
尝试修剪它:
$username_notes = trim( $_POST['nameNotes'] );
有时字符串中的空格会导致这种错误,而且很难发现。
【讨论】:
@DavidBiga - 当然,很乐意提供帮助?【参考方案2】:我经常需要添加 ?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 方法。
【讨论】:
以上是关于从 $.ajax 调用中检索参数的问题的主要内容,如果未能解决你的问题,请参考以下文章
jquery-无法从我通过ajax调用获得的对象类型响应中检索数据
在 codeigniter 中使用 AJAX 从视图调用控制器函数并从 db 检索行