AJAX调用PHP不返回任何值

时间:2015-08-30 04:37:41

标签: 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: '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调用时,API调用会起作用。

2 个答案:

答案 0 :(得分:1)

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

转到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不同)创建自己的variable scope,并且只能看到传递给函数或在函数本身内定义的变量。

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

答案 1 :(得分:0)

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

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

    echo json_encode($result_two);

?>