ajax和mysql实时读取数据库_使用JQuery AJAX和php从mysql数据库获取数据

这是跟进帖子,在我遇到问题的情况下,我的php代码未返回应有的数据。 我有这个api.php代码(在Joomla下):

require_once ( 'includes/defines.php' );

require_once ( 'includes/framework.php' );

/* Create the Application */

$app = JFactory::getApplication('site');

/* Make sure we are logged in at all. */

if (JFactory::getUser()->id == 0)

die("Access denied: login required.");

//get current user

$user =& JFactory::getUser();

// get a reference to the database

$db = &JFactory::getDBO();

$query_camera_name ="SELECT camera_name, camera_status, camera_quality, email_notice, camera_hash, camera_type FROM #__cameras WHERE user_id=".$user->id." AND camera_status!='DELETED'";

$db->setQuery($query_camera_name);

//get number of cameras so we can build the table accordingly

$db->query();

$num_rows = $db->getNumRows();

// We can use array names with loadAssocList.

$result_cameras = $db->loadAssocList();

header('Content-Type: application/json');

echo json_encode($result_cameras);

?>

此代码自行返回有效的JSON代码。 然后,我的client.php代码在那里显示了一些结果。

Output:

Append this text

var js = jQuery.noConflict();

js(function ()

{

js.ajax({

url: 'ajax_dashboard/api.php',                  //the script to call to get data

data:"",

dataType: 'json',                //data format

success: function(data, textStatus, xhr) {

console.log(xhr);

js.each(data, function() {

js.each(this, function(k, v) {

js('#output').append("key:"+k+" value:"+v);

});

});

}

});

});

我已经在另一篇文章的用户帮助下验证了jquery代码很好(http://stackoverflow.com/questions/8329495/iterate-over-json-array-using-jquery)。 我得到的错误是从jQuery的

对象为空

额外的控制台消息也提供了此信息:Object {readyState = 4,status = 200,statusText =" OK"}和responseText ="

由于某种原因,JSON代码未正确传递。 当我查看要验证的人的JSON代码时,会发生以下情况:

[

{

"camera_name":"ffgg",

"camera_status":"DISABLED",

"camera_quality":"MEDIUM",

"email_notice":"DISABLED",

"camera_hash":"0d5a57cb75608202e64b834efd6a4667a71f6dee",

"camera_type":"WEBCAM"

},

{

"camera_name":"test",

"camera_status":"ENABLED",

"camera_quality":"HIGH",

"email_notice":"ENABLED",

"camera_hash":"6ab000ef7926b4a182f0f864a0d443fc19a29fdd",

"camera_type":"WEBCAM"

}

]

我认为这与Joomla展示此内容的方式有关。 有任何想法吗?

您确定ajax_dashboardapi.php是指实际的文件名吗?

是的,没错。

决定回答我自己的问题。只是不可能这样做。我必须走组件路线(创建自己的自定义组件)。据我所知,别无选择。

在包含Joomla框架和其他文件之前,必须定义JEXEC变量,因为所有其他文件在继续之前检查是否已定义此变量。

这是他们执行的检查:

defined('_JEXEC') or die('Restricted access');

如此处所述:http://docs.joomla.org/Why_do_most_of_the_Joomla!_PHP_files_start_with_%22defined%28%27_JEXEC%27%29...%3F

您需要将此行添加到文件中:

define( '_JEXEC', 1 );

但是警告一词" DANGER WILL ROBINSON,DANGER"

调用主Joomla入口点并将请求路由到您自己的组件可能会更安全。这相当容易做到,您可以取消Joomla的所有无关紧要的输出,并仅调用您自己组件的输出,将布局指定为html,json,xml或所需的任何其他格式。

你能摆脱这个:

data:"",

从ajax调用,看看会发生什么?我从来没有见过它是空的,并且好奇是否会改变任何东西。如果jQuery在发布URL后面附加了多余的内容,那么Joomla和您的php可能会感到沮丧,因为那是存在的。

数据是一个可选参数,因此我应该想象将其保留为空白将具有相同的效果。

当我删除它仍然是同样的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值