【问题标题】:jQuery $.getJSON not returning datajQuery $.getJSON 不返回数据
【发布时间】:2014-04-25 17:53:21
【问题描述】:

我正在通过 $.getJSON 对我的 PHP 脚本进行 AJAX 调用。问题是,PHP 正在返回 json 编码的数据,但我的脚本根本不是 console.logging 任何东西。

function Club(){
    this.URL = "http://localhost/imp03/includes/ajaxCall.php";
}
Club.prototype.loadData = function(){
    $.getJSON(Club.URL, function(data){
        console.log(data);
    });
}

控制台没有错误,这是我的 PHP 脚本。

$db = new Database(HOST, USER, PASS, DB);
$array = $db->getData();
header('Content-Type: application/json');
echo json_encode($array);
exit;

这是我的Database类中的方法,负责获取数据

public function getData(){
    try{
        $sql = $this->db->prepare("SELECT * FROM inlever3");
        $sql->execute();
        $result = $sql->fetchAll();
        return $result;
    } catch(PDOException $e){
        echo $e;
        return false;
    }
}

【问题讨论】:

  • 首先,$.getJSON需要服务器返回json类型数据,需要json_encode(array)
  • 如果可能的话,添加一个jsfiddle你会得到更多的回应。
  • 当您在浏览器中导航到http://localhost/imp03/includes/ajaxCall.php 时会看到什么?
  • @TechStone 我已经编辑了我的代码,包括了标题,并且我 am json_encoding 我的数据,仍然没有变化。
  • @Dave:很难包含 jsFiddle,因为我不能包含 PHP。 Holt:我看到了我要求的 JSON 数据。 ;)

标签: javascript php jquery ajax


【解决方案1】:

Club 是函数,没有URL 属性。

Club.prototype.loadData = function(){
    $.getJSON(Club.URL, function(data){
        console.log(data);
    });
}

应该是

Club.prototype.loadData = function(){
    // here change Club.URL to this.URL
    $.getJSON(this.URL, function(data){
        console.log(data);
    });
}

并像这样使用它:

var club = new Club();
club.loadData();

【讨论】:

    【解决方案2】:

    刚刚试了一下,效果不错:

    您需要在$.getJSON() 调用中使用this.URL 而不是Club.URL

    test.php

    <?php
    
    if (isset($_GET['loadData']))
    {
        // dummy data
        exit(json_encode(
            array('hello' => 'world')
        ));
    }
    
    ?>
    
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script type="text/javascript">
    
    function Club(){
        this.URL = "test.php?loadData";
    }
    Club.prototype.loadData = function(){
        $.getJSON(this.URL, function(data){
            console.log(data);
        });
    }
    
    var c = new Club();
    c.loadData();
    
    </script>
    

    【讨论】:

    • 不会有任何改变!!
    • @Vimalraj.S 你是什么意思?
    • 他的网址可能有问题
    • @LatheesanKanes 糟糕,抱歉,在这里他甚至可以使用c.URL
    猜你喜欢
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2015-06-09
    • 2021-12-20
    • 2011-02-21
    • 2014-05-19
    相关资源
    最近更新 更多