从MySQL DB中获取脚本标记内的PHP数据,以便与Javascript一起使用
Getting PHP data from MySQL DB inside script tag for use with Javascript
这类似于PHP在Javascript破解脚本中生成的内容,但我无法理解我错在哪里。
这是简报。我试图将MySQL数据库中的10个字符串输出到一个javascript数组s中(s[1]到s[10])(存储在一个MySQL表中的pt1到pt1-info列下,这样代码对所有人来说都是可以理解的)。(注意$apos只是一个撇号字符串,这里不关心)。
<?php
echo "<script>'n";
echo "var s = [];'n";
for($i=1;$i<=10;$i++) {
echo "s[".$i."] = ".$apos.$r['pt'.$i].$apos.";'n";
}
echo "</script>";
?>
当我在浏览器中通过"查看源代码"查看源代码时,它会生成正确的代码:
<script>
var s = [];
s[1] = 'a';
s[2] = 'b';
.
.
s[10] = 'j';
</script>
然而,这不能作为脚本工作(这意味着,如果我在谷歌开发工具中查看,并点击"script"标记元素中的内容,就会在下面的栏中被告知是"text",而不是"script")。
然而,如果我删除PHP,并以相同的方式手动编写整个脚本,它就可以正常工作。我已经尝试删除PHP代码中的换行符,但仍然存在相同的问题。
PHP中的某些东西破坏了脚本。你能帮忙吗?
我的最佳猜测是,您的一个(或多个)字符串包含一个破坏PHP输出的字符(如撇号)。尽管如此,Passery已经在您的评论部分提出了最佳解决方案:
echo '<script>';
echo 'var s = ' . json_encode($info);
echo '</script>';
我认为您可能误解了开发工具。当我仔细观察Chrome时,它确实将您的脚本标识为文本,可能是因为默认类型是text/javascript
。在<script>
标记上放置显式类型声明没有任何更改。
但是,当我在for循环之后添加echo "alert('s[1]='+s[1]);";
时,会显示警报,并且我可以使用调试器查看其他s[I]的值。
换句话说,我认为您生成的JavaScript一直有效。
我知道你已经用另一种方法解决了这个问题。我发布这个答案只是为了防止它对其他人有所帮助。
以下是我用于测试的内容:
<?php
$a = "-abcdefghij";
$apos="'";
echo "<script type='"text/javascript'">";
echo "var s = [];";
for($i=1;$i<=10;$i++) {
echo "s[".$i."] = ".$apos.$a[$i].$apos.";'n";
}
echo "alert('s[1]='+s[1]);";
echo "</script>";
?>
相关文章:
- 如何在上传前在浏览器中去除图像元数据(javascript)
- 从JSON对象中删除额外的括号和数据 - Javascript
- 测试两个变量是否包含一些数据 JavaScript
- 追加 POST 数据 javascript
- 通过设置SRC数据Javascript平滑淡入图像RGB
- 列出json数据javascript
- Yahoo api 从公共数据 JavaScript 切换到 oAuth
- 对恶意用户隐藏数据 JavaScript 函数
- JavaScript:如何预加载<对象>图像数据?/ JavaScript 的图像与<对象>
- 张贴base64数据JavaScript/jQuery
- 自动求和和和追加数据javascript
- 在数据Javascript上迭代时删除对象中以前的项
- 获取值数据
javascript - 获取数据javascript和推到数组Cordova
- 如何在用户单击提交按钮之前从输入框读取数据?(JavaScript)
- 在函数中传输数据?Javascript
- .filter在HTML表上不返回数据- JavaScript
- JSON数据&JavaScript(试图找到错误,可能只是语法)
- 图表数据javascript
- 不能给ajax加载的数据javascript