调用PHP不返回任何值

AJAX Call to PHP not returning any value

本文关键字:任何值 返回 PHP 调用      更新时间:2023-09-26

我正在尝试使用AJAX调用PHP文件中的函数。

该函数基本上接受在AJAX调用中提交的数据,向API发出几个其他请求,并从外部API获取JSON对象。

我想将JSON对象发送回我的页面,由javascript执行。

下面是我的代码:
function secureGet(sumNam){
    $.ajax({
        dataType: "json",
        type: 'POST',
        data: {sumNam: sumNam},
        url: 'get_score.php',
        success: function (json, state) {
            console.log(state);
            statsObject = json;
            console.log(statsObject);
        }
    })
}
PHP:

    <?php
require_once 'apikey.php';
if(isset($_POST['sumNam'])){
$name = $_POST['sumNam'];
secureProxy($name);
}
function secureProxy($summoner_name){
$url_one = "https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/" . $summoner_name . "?api_key=" . $api_key;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_URL, $url_one);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result_one = curl_exec($ch);
    curl_close($ch);
$json_array = json_decode($result_one, true);
$summoner_id = $json_array[$summoner_name]['id'];
$url_two = "https://na.api.pvp.net/api/lol/na/v2.2/matchhistory/" . $summoner_id .  "?rankedQueues=RANKED_SOLO_5x5,RANKED_TEAM_5x5&beginIndex=0&endIndex=10&api_key=" . $api_key;
    $ch2 = curl_init();
    curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch2, CURLOPT_URL, $url_two);
    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
    $result_two = curl_exec($ch2);
    curl_close($ch2);
print_r($result_two);
}
?>

我认为呼叫成功了,因为在我的控制台中它说:

iGET XHR  http://127.0.0.1/b2p/get_score.php [HTTP/1.1 200 OK 1551ms]

但是控制台没有记录返回对象的任何信息。

为什么会发生这种情况?

谢谢!

<br />
<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Notice: Undefined variable: api_key in C:'wamp'www'b2p'get_score.php on line <i>12</i>

…这持续了一段时间

{"status": {"message": "Missing api key", "status_code": 401}}

但是当我单独执行时,API调用可以工作。

您看到的是php通知或警告。如果启用了error_reporting,它们将在顶部发送的任何响应中回显警告。这将有效地使你发回的任何json无效,导致200错误,错误说你在某处缺少API密钥,我从那里开始,它还会给你文件名和行号。

转到C:'wamp'www'b2p'get_score.php并检查第12行,无论你在做什么,都需要一个API密钥,而你没有提供一个。

很可能是这一行$url_one = "https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/" . $summoner_name . "?api_key=" . $api_key;

是否在这行执行之前定义了$api_key ?

请记住,PHP函数(不像javascript)创建自己的变量作用域,并且只能看到传递给函数或在函数本身中定义的变量。

您需要在调用函数时将API键变量传递给函数

我认为它没有返回任何东西,因为在你的PHP中,你没有设置你返回的类型。因为你将返回Json格式,你必须设置你的PHP头如下:

    header('Content-type: application/json');
    echo json_encode($result_two);
?>