Javascript 对PHP的AJAX调用不返回任何值
我正在尝试使用AJAX调用PHP文件中的函数 该函数基本上获取在AJAX调用中提交的数据,向API发出几个其他请求,并从外部API获取一个JSON对象 我想将JSON对象发送回我的页面,由javascript执行操作 这是我的密码: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
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);
?>