我正在尝试使用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调用会起作用。
答案 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);
?>