jQuery Ajax PHP数组空白响应无错误

时间:2018-08-20 14:32:10

标签: javascript php jquery ajax

我有一个奇怪的问题,我的 Ajax 呼叫没有任何响应。我得到了数据,但是当我试图返回它时,我只得到了一个空白屏幕。我的项目中需要3个文件,因为我的项目具有许多DB调用和函数,因此更易于阅读。

所以这是调用我的ajaxCall函数的众多函数之一

$.when(ajaxCall("getOutlets", '', null)).done(function(res) {
    if(res) {
        console.log(res);

这是整个项目的全局ajaxCall函数:

function ajaxCall(functionName, params, answers) {
    return jQuery.ajax({
        type: "POST",
        url: '/ajax/ajax.php',
        dataType: 'json',
        data: {
            functionIdentifier: functionName, 
            functionParams: params,
        },
然后

我的Ajax.php文件基于functionName调用我的 database.php 文件中的函数。 Ajax.php

$response = array();

switch ($functionIdentifier) {
    case 'getOutlets':
        $response = $database->getSearchOutletsFromDatabase($functionParams);
        break;
    .... many switch cases
}

echo json_encode($response);

die();
?>

最后在我的database.php中,它调用如下所示的mysqli函数:

public function getSearchOutletsFromDatabase() {
    $result = mysqli_query($this->conn, "CALL `sp_outlets_get`()") or die(mysqli_error($this->conn));   
        while($row = $result->fetch_assoc()) {
            $response[] = $row;
        }

        @mysqli_next_result($this->conn);
            return $response;
        }

这是奇怪的部分。如果我从$result仅返回一个对象,例如return $result->fetch_object(),则我成功返回第一个对象。但是,当我只是将行保存在数组中并想返回我的数组时,整个响应为空。没有错误。没有。

如果您需要更多信息,请说出来,我会尝试添加更多信息。

编辑: 如果我将其放在返回响应的ajax.php文件之上,那么我在开发人员网络标签上会收到以下错误消息:

header('Content-Type: application/json');
 $response = array();

    switch ($functionIdentifier) {
        case 'getOutlets':
            $response = $database->getSearchOutletsFromDatabase($functionParams);
            break;
        .... many switch cases
  

SyntaxError:JSON.parse:第1行第1列的数据意外结束   JSON数据

1 个答案:

答案 0 :(得分:1)

我发现了导致错误的原因(有时这是最容易的事情之一)。好吧,我的回复是ö,ä,ü等。 在将数据返回给ajax之前添加utf8_encode可以解决此问题。

public function getSearchOutletsFromDatabase() {
    $result = mysqli_query($this->conn, "CALL `sp_data_get`()") or die(mysqli_error($this->conn));  
    $response = array();
    while($row = $result->fetch_assoc()) {
        $res['ID'] = $row['ID'];
        $res['Name'] = utf8_encode($row['Name']);
        array_push($response, $res);
    }
    @mysqli_next_result($this->conn);
    return $response;
}