使用JSON从Ajax调用返回多行
Returning multiple rows from an Ajax Call using JSON
我目前正试图从连接到MySql数据库的PHP文件的ajax调用中检索多行。
我的代码如下:
JQuery/HTML
<script>
$(document).ready(function(){
function getComments(){
var boxid = document.location.hash.substring(1); // remove #
$.ajax({ //Make the Ajax Request
type: "POST",
url: "getComments.php", //file name
data: {boxid: boxid},
success: function(server_response){
var data = $.parseJSON(server_response);
var html = '', comment;
for(var i = 0; i < data.length; i++){
comment = data[i];
html += '<div id="' + comment.user_id + '"><span>' + comment.username + '</span><span>' + comment.comment + '</span></div>';
}
$('#ajax_comment').html(html);
}
});
}
});
</script>
<span name="ajax_comment" id="ajax_comment"></span>
PHP(getComments.PHP)
session_start();
include('config.php');
if (isset($_SESSION['userid']))
$userid = $_SESSION['userid'];
else
$userid = 0;
if (isset($_POST['boxid']))
{
$knownid = $_POST['boxid'];
$query = mysql_query("SELECT u.id, u.USERNAME, c.COMMENT, c.DATE_ADDED, c.ACTIVE, c.id FROM ratemybox.USERS u, ratemybox.COMMENTS c WHERE u.id = c.user_id and c.box_id = $knownid ORDER BY c.DATE_ADDED DESC");
$result = mysql_fetch_array($query);
$results = array();
foreach($result as $row)
{
$user_id = $row['id'];
$username = $row['username'];
$comment = $row['comment'];
$dateAdded = $row['date_added'];
$results[] = array("user_id" => $user_id, "username" => $username, "comment" => $comment, "date_added" => $dateAdded);
}
echo json_encode($results);
}
这并没有产生我所期望的结果。任何建议都很好。
编辑
当使用Firebug时,我得到了以下错误:
Illegal string offset 'id' in
Illegal string offset 'username'
Illegal string offset 'comment'
Illegal string offset 'date_added'
不确定这是否有帮助?
在您的选择查询中,您试图通过$knownid进行筛选,但是,您将变量保留在引号中。尝试更改为:
$query = mysql_query("SELECT u.id, u.USERNAME, c.COMMENT, c.DATE_ADDED, c.ACTIVE, c.id FROM ratemybox.USERS u, ratemybox.COMMENTS c WHERE u.id = c.user_id and c.box_id = " . $knownid . " ORDER BY c.DATE_ADDED DESC");
除了已经给出的许多建议(在将$_POST["boxid"]添加到查询中之前,您确实需要转义它)之外,很难在没有一些错误的情况下找到代码的问题。
尝试在foreach之前添加var_dump($result),以确保您的查询返回了一些内容,或者检查浏览器的控制台以查看服务器实际返回的内容。
相关文章:
- 如何从ajax调用返回.wrap()元素
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- Jquery:对返回JSON数据的php脚本的Ajax调用
- 无法在mvc视图中使用ajax调用获取操作返回的模型对象列表
- Ajax调用返回当前html页面,而不是请求的文件
- AJAX调用并在Node中获取返回数据
- 是否可以将JXBrowser显示的JS确认对话框的结果返回到调用它的JS部分
- 调用Ajax并返回响应
- 从javascript中调用的Android函数中获取值,并将其返回给js
- 我应该返回一个类似console.log()的方法调用吗
- 如何记录调用另一个函数的函数的返回值
- 为什么返回'原因'来自被拒绝的jQueryAJAX调用theable
- 如何在模式框中显示ajax调用返回的数据
- 返回调用方数据值的 jQuery 函数
- Java Servlet 总是在 AJAX GET 请求 SERVLET 时返回调用页面的 HTML 代码
- 返回调用页面javascript
- 简单的facebook注销返回调用没有访问令牌
- WScript.Shell CurrentDirectory返回调用应用程序的位置,而不是当前位置
- Angularjs $http在第一次调用ng-click后不返回调用
- 如何在AJAX中为JSON的每次返回调用引入延迟和淡出