Javascript 对PHP的AJAX调用不返回任何值

Javascript 对PHP的AJAX调用不返回任何值,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我正在尝试使用AJAX调用PHP文件中的函数 该函数基本上获取在AJAX调用中提交的数据,向API发出几个其他请求,并从外部API获取一个JSON对象 我想将JSON对象发送回我的页面,由javascript执行操作 这是我的密码: function secureGet(sumNam){ $.ajax({ dataType: "json", type: 'POST', data: {sumNam: sumNam}, url

我正在尝试使用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);

}

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

有什么原因可以解释为什么会发生这种情况

谢谢

<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>

但是,当我单独执行API调用时,它就会工作。

您看到的是php通知或警告。如果您启用了错误报告,它们将在顶部发送的任何响应中回显警告。这将有效地使您发送回的任何json无效,导致200错误,错误表示您在某处丢失了API密钥,id从那里开始,它还将为您提供文件名和行号

转到C:\wamp\www\b2p\get_score.php并检查第12行,无论您在那里做什么,都需要一个API密钥,但您没有提供API密钥

很可能这一行
$url\u one=”https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/" . $召唤者的名字。“?api_key=“$api_密钥

在执行此行之前,是否定义了
$api\u key

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


调用函数时需要将API键变量传递到函数中。

我认为它没有返回任何内容,因为在PHP中,您没有设置要返回的类型。由于您将以Json格式返回,因此必须按如下所示设置PHP标头:

    header('Content-type: application/json');

    echo json_encode($result_two);

?>

您在ajax调用中指定了
dataType:“json”
,但在php中,您正在执行
print\r($result\u two)
不返回
json
。根据文档---
。。。JSON数据被严格解析;任何格式错误的JSON都将被拒绝,并引发解析错误。您可以尝试
echo json\u encode($result\u two)
,取决于
$result\u two
的值。因此
code:200
告诉您ajax成功找到了页面,但是
SyntaxError:JSON.parse:
告诉您返回的数据是无效的JSON。由于错误消息是JSON数据第1行第1列的
意外字符,这意味着返回的数据不是以
[
{
。如果
$result\u two
已经是有效的json,您可以直接回显它。@CookieCoder您看到的是php通知或警告。如果启用了
错误报告
,它们将在顶部发送的任何响应中回显警告。这将有效地使您发送回c的任何json无效由于200错误,该错误表示您在某处缺少一个API键,id从那里开始,它还将为您提供文件名和行号定义在哪里?请记住,PHP函数(与javascript不同)创建自己的(变量范围)[并且只能看到传递到函数中或在函数中定义的变量本身明白了!我没有将api键传递到函数中。它基本上不在函数的范围内:)
{"status": {"message": "Missing api key", "status_code": 401}}
    header('Content-type: application/json');

    echo json_encode($result_two);

?>