ajax的成功不会提醒任何事情

时间:2015-05-15 14:32:41

标签: php jquery ajax json

我有一个AJAX请求,如果get id成功,我想提醒数据。

如果我print_r我的PHP函数,我得到了正确的结果。

我的阿贾克斯:

$.ajax({
            type: "GET",
            url: "getQuestions.php",
            datatype: "json",
            data:{
                compid:  id[4].innerHTML
            },
            success: function(response){
                alert(response);
            }

        });

我的getQuestions.php:

<?php
include "functions.php";

getQuestions($_GET['compid']);

我的函数getQuestions($ compid)在functions.php中:

function getQuestions($compid){
    $int=intval($compid);
    $vastus=array();
    $conn = dbconnect();
    $sql="SELECT * FROM bet_question WHERE compid = $int";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            array_push($vastus,$row);
        } 
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    return  json_encode($vastus);
}

如果我在print_r(getQuestions("some valid id"))getQuestion.php我得到了有效的结果,如果我在var_dump($_GET['compid'])getQuestion,我会从ajax请求中获得正确的ID。

如果我检查是否使用inspect元素发送了请求,那么我发送的请求是正确的参数,但响应是空的。

2 个答案:

答案 0 :(得分:4)

您需要使用return而不是echo,而应将其更新为

if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            array_push($vastus,$row);
        } 
          echo json_encode($vastus);
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
    exit;

答案 1 :(得分:0)

您不必返回数据,使用echo代替,并设置内容类型:

function getQuestions( $compid ) {

    $int=intval($compid);
    $vastus=array();
    $conn = dbconnect();
    $sql="SELECT * FROM bet_question WHERE compid = $int";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {

        while($row = $result->fetch_assoc()) {

            array_push($vastus,$row);

        }

    } else {

        echo "Error: " . $sql . "<br>" . $conn->error;

    }

    @header( 'Content-Type: application/json' );
    echo json_encode( $vastus );
    exit;

}

希望有所帮助