我在调用此函数时出现标题错误。
<script type="text/javascript">
function upvote(user, id){
fazer = <?php echo $doornot ?>;
if( fazer == 'true'){
window.location = "http://www.dawnsource.com/forums/register.php";
}else {
user = <?php echo $user; ?>;
id = <?php echo $_GET[id]; ?>;
$.ajax({
url: 'scripts/upvote.php',
type: 'post',
data: 'user='+user+'&id='+id,
success: function()
{
alert('success, upvote completed ');
}, error: function()
{
alert('something went wrong, rating failed');
}
});
}
}
</script>
错误正在发生:
user = <?php echo $user; ?>;
但是它让我在回声中得到了正确的价值。为什么会这样?
答案 0 :(得分:1)
你的php数据周围缺少引号,所以你生成了无效的javascript。记住......无论PHP输出什么,都必须在javascript环境中正确。
<?php
$foo = 'bar';
?>
<script>
baz = <?php echo $foo ?>;
</script>
将生成
baz = bar;
和bar
将被解释为未定义的变量名称。
正确的解决方案是简单地通过PHP中的json传递所有内容:
bar = <?php echo json_encode($foo); ?>;
无论$ foo中有什么内容, 始终会生成有效的javascript。并产生
baz = "bar";
答案 1 :(得分:0)
true
是,则 $doornot
应为布尔值。此外,在PHP和JavaScript中,字符串引号在返回值时会被剥离。您的JavaScript会看到另一个变量,而不是String。尝试:
<script type="text/javascript">
function upvote(){
var fazer = <?php echo $doornot ?>;
if(fazer == true){
window.location = 'http://www.dawnsource.com/forums/register.php';
}
else {
var user = '<?php echo $user; ?>';
var id = '<?php echo $_GET[id]; ?>';
$.ajax({
url: 'scripts/upvote.php',
type: 'post',
data: 'user='+user+'&id='+id,
success: function(){
alert('success, upvote completed');
},
error: function(){
alert('something went wrong, rating failed');
}
});
}
}
</script>
旁注:
我在user
函数中看不到id
或upvote
参数的用法,因为您从PHP获取这些值,并且仅在条件下。此外,您应该在JavaScript中使用关键字var
,除非您希望这些变量是全局的。