PHP脚本和HTML – 这适用于Firefox和Chrome,但不适用于IE
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP脚本和HTML – 这适用于Firefox和Chrome,但不适用于IE,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含9751字,纯文字阅读大概需要14分钟。
内容图文
![PHP脚本和HTML – 这适用于Firefox和Chrome,但不适用于IE](/upload/InfoBanner/zyjiaocheng/722/9cfbb53d68874afdaa126407d4242fb5.jpg)
下面是我试图用于我的网站,这个PHP页面在Firefox和Chrome中没有任何问题.
出于某种原因,它似乎没有在IE中工作(在8和9测试)我真的不知道这里有什么问题.
我在IE8中遇到的错误是“不是一个有效的二维数组”这似乎是来自谷歌托管的.js
我想知道为什么这只出现在IE8而不是Chrome或Firefox?
<?php
// Top snippet of code comes from:
// www.ip2nation.com/ip2nation/Sample_Scripts/Output_Full_Country_Name
// and adapted as necessary.
$server = 'sanitized'; // MySQL hostname
$username = 'sanitized'; // MySQL username
$password = 'sanitized'; // MySQL password
$dbname = 'sanitized'; // MySQL db name
// 1 address per line, or feed with a DB if you're feeling clever.
$lines = file('blocklist.txt');
$db = mysql_connect($server, $username, $password) or die(mysql_error());
mysql_select_db($dbname) or die(mysql_error());
$bans = array();
foreach ($lines as $lnum => $line)
{
$l=rtrim($line);
$sql = 'SELECT
c.country
FROM
ip2nationCountries c,
ip2nation i
WHERE
i.ip < INET_ATON("'.$l.'")
AND
c.code = i.country
ORDER BY
i.ip DESC
LIMIT 0,1';
list($cc) = mysql_fetch_row(mysql_query($sql));
if ($cc != "")
if(empty($bans["$cc"]))
{
$bans["$cc"] = 1;
}
else
{
$bans["$cc"]++;
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="generator" content="HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<script type='text/javascript' src='https://www.google.com/jsapi'>
</script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages': ['geochart']});
google.setOnLoadCallback(drawRegionsMap);
function drawRegionsMap() {
var data = google.visualization.arrayToDataTable([
['Country','Blocks'],
<?php
foreach ($bans as $key => $value)
print"['$key', $value],\n";
?>
]);
var options = {
backgroundColor : '#baecfd',
colors : ['#FFFFFF', '#FF0000']
};
var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
chart.draw(data, options);
};
</script>
<title></title>
<style type="text/css">
div.c1 {width: 900px; height: 500px;}
</style>
</head>
<body>
<div id="chart_div" class="c1"></div>
</body>
</html>
在IE中编译时的代码是:
<html>
<head>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages': ['geochart']});
google.setOnLoadCallback(drawRegionsMap);
function drawRegionsMap() {
var data = google.visualization.arrayToDataTable([
['Country','Blocks']
['Japan', 11]
['United States', 45]
['Argentina', 1]
['Brazil', 1]
['Bosnia and Herzegovina', 1]
['Germany', 4]
['France', 2]
['Russia', 5]
['China', 24]
['Thailand', 1]
['New Zealand (Aotearoa)', 1]
['Turkey', 1]
['Korea (South)', 6]
['Panama', 2]
['Taiwan', 6]
['Canada', 14]
['Luxembourg', 1]
['United Kingdom', 1]
['Philippines', 1]
['Singapore', 3]
['Switzerland', 2]
['Hong Kong', 2]
]);
var options = {
backgroundColor : '#25383c',
colors : ['#FFFFFF', '#FF0000']
};
var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
chart.draw(data, options);
};
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
</body>
</html>
在Chrome中编译时的代码是:
<html>
<head>
<script type='text/javascript' src='https://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('visualization', '1', {'packages': ['geochart']});
google.setOnLoadCallback(drawRegionsMap);
function drawRegionsMap() {
var data = google.visualization.arrayToDataTable([
['Country','Blocks'],
['Japan', 11],
['United States', 45],
['Argentina', 1],
['Brazil', 1],
['Bosnia and Herzegovina', 1],
['Germany', 4],
['France', 2],
['Russia', 5],
['China', 24],
['Thailand', 1],
['New Zealand (Aotearoa)', 1],
['Turkey', 1],
['Korea (South)', 6],
['Panama', 2],
['Taiwan', 6],
['Canada', 14],
['Luxembourg', 1],
['United Kingdom', 1],
['Philippines', 1],
['Singapore', 3],
['Switzerland', 2],
['Hong Kong', 2],
]);
var options = {
backgroundColor : '#25383c',
colors : ['#FFFFFF', '#FF0000']
};
var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
chart.draw(data, options);
};
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;"></div>
</body>
</html>
解决方法:
var data = google.visualization.arrayToDataTable([
['Country','Blocks'],
<?php
foreach ($bans as $key => $value)
print"['$key', $value],\n";
?>
]);
将返回:
var data = google.visualization.arrayToDataTable([
['key1', value1],
['key2', value2],
]);
第二个结尾处的额外逗号会破坏它.看到这个:
http://www.openjs.com/articles/ie/array_comma_problem.php
var sample = {
'hello':'world',
'foo':'bar', //This is 'the last comma'
}
alert("Hello World");
在大多数浏览器中,最终的’,’是可选的 – 它的存在不会对脚本产生任何影响.但IE将决定做一些无法解释的事情 – 它只是忽略了那段代码之后的所有事情.在IE浏览器中永远不会看到“Hello World”警报.
另见:https://stackoverflow.com/a/5139395/504299:
Historically speaking, ES3 disallowed having a trailing comma when defining an object literal. This was one thing that IE did get right, but most other bowser vendors went south and did allow the trailing comma. So technically it was a bug in the other browsers that supported it.
内容总结
以上是互联网集市为您收集整理的PHP脚本和HTML – 这适用于Firefox和Chrome,但不适用于IE全部内容,希望文章能够帮你解决PHP脚本和HTML – 这适用于Firefox和Chrome,但不适用于IE所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。