JQUERY JSON AJAX可以离线工作,但不能在线工作

时间:2011-12-06 20:45:29

标签: jquery mysql ajax json

我收到了这段代码。它在我的本地主机上工作得非常好但是当我把它放在网上它只将数据保存到数据库但它似乎没有加载它。

当我通过ajax将api.php中的字符串传递给网站时,它可以工作。所以也许它与json有关。另一方面,我在我的服务器上尝试了来自http://api.jquery.com/jQuery.getJSON/的get_json示例,这也是有用的。

我尝试了许多不同的东西,比如jsonp,json-fallback等,但似乎没什么用。

这是代码:

api.php:

<?php
include('db.php');
$con = mysql_connect($host,$user,$pass);
$dbs = mysql_select_db($databaseName, $con);
$tableName = $_GET['page'];
$category = $_GET['category'];
$date = $_GET['date'];

if ($date == Null){
if ($category <> Null){
$result = mysql_query("SELECT * FROM $tableName WHERE category LIKE '$category'");  
}else {
$result = mysql_query("SELECT * FROM $tableName"); 
}
}else{
$result = mysql_query("SELECT * FROM $tableName WHERE date LIKE '$date'"); 
}

$data = array();
while ( $row = mysql_fetch_row($result))
{
echo json_encode($data);
?>

在后端的某个地方:

$.ajax({  
    url: 'api.php?page=home', data: "", dataType: 'json',  success: function(rows) {                        
        for (var i in rows){
                var row = rows[i];  
                var vdate = row[0];
                var vtitle = row[1];
                var vcontent = row[2];
                $('#edate').val(vdate);
                $('#etitle').val(vtitle);
               $('#econtent').val(vcontent);
            }
    }
}); 

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:2)

我没有详细研究这个,但这可能是你的问题:

$data = array();
while ( $row = mysql_fetch_row($result))
{
echo json_encode($data);
?>

你应该关闭它,并且json编码$ row而不是$ data

答案 1 :(得分:0)

检查您的控制台(firefox或chrome press F12&gt;点击Console,看到有任何错误?,将它们发布到您的问题中。

还使用$.ajax内置错误处理程序。

$.ajax({  
url: 'api.php?page=home',
data: "",
dataType: 'json',
success: function(rows) {
    for (var i in rows){
            var row = rows[i];  
            var vdate = row[0];
            var vtitle = row[1];
            var vcontent = row[2];
            $('#edate').val(vdate);
            $('#etitle').val(vtitle);
           $('#econtent').val(vcontent);
        }
},
// Any HTTP Errors will be alerted.
error: function (xhr, ajaxOptions, thrownError){
    alert(xhr.status);
    alert(thrownError);
}
});

主要 ..检查控制台是否有错误。它必须在您的控制台或上面的处理程序中抛出错误。