我正在制作一个用户名检查器,它接收POST数据并将其发送到一个PHP脚本,该脚本创建一个简单的数组(仅2个键),该数组被传回到jQuery中并回显为<p>
标签。我可以通过编写所有数据来调用它,但每当我尝试访问数据中的单个键时(请记住它的数组),它只返回空白或}
。这是我的代码。jQuery AJAX操作的困难
HTML/JavaScript的
<!DOCTYPE html>
<html lang='en'>
<head>
<title>Username Checker</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<center>
<h1>Username Checker</h1>
<input type="text" id="name" />
<input type="button" value="Submit" id="submit" />
<br />
<br />
<hr />
<br />
<p id="status"></p>
</center>
<script type='text/javascript'>
$('input#submit').on('click', function() {
var name = $('input#name').val();
if ($.trim(name) != '') {
$.post('status.php', {name: name}, function(data) {
document.getElementById('status').innerHTML= data[0];
});
}
});
</script>
</body>
</html>
status.php
<?php
function remoteStatusCode($url){
$agent = $_SERVER['HTTP_USER_AGENT'];
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch,CURLOPT_VERBOSE,false);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch,CURLOPT_SSLVERSION,3);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE);
curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpcode == 404) {
$httpcode = "<span style='color:red;'>".$httpcode;
$httpcode .= "</span>";
}
else {
$httpcode = "<span style='color:green;'>".$httpcode;
$httpcode .= "</span>";
}
return $httpcode;
}
$name = $_POST['name'];
$status = array(
'youtube' => remoteStatusCode('https://www.youtube.com/user/'.$name),
'deviantart' => remoteStatusCode('http://'.$name.'.deviantart.com/'),
);
echo json_encode($status, JSON_UNESCAPED_SLASHES);
?>
请不要告诉我,我的代码很容易受到攻击或任何东西,因为我完全知道我还没有添加任何因为它仍处于测试阶段,我还没有计划发布它。
记住它的一个数组_我不这么认为。试试'data.youtube',或者真的只是在你的ajax回调中执行'console.log(data)'来查看数据的外观。 –
@JasonP它返回undefined并且控制台返回这个{“youtube”:“ 404”,“deviantart”:“ 200” }(与我刚刚调用数据相同) – George
如果'data'为'{“youtube”:“ 404”,“deviantart”:“ 200“}',那么'data.youtube'应该是' 404':http://jsfiddle.net/PABaW/ –