传递给函数的onClick的JavaScript变量未定义

贾斯汀

我正在尝试使用PHP,JavaScript和MySQL编写一个简单的表决脚本。当将变量从href onclick参数中传递给javascript函数时,出现“未定义”错误,我相信是指该变量。

我的PHP看起来像这样:

echo "<td class=\"uparrow\"><a href=\"javascript:void(0);\" onclick=\"upVote.call(". $row['serial'] ."); return false;\">&#8689;</a></td>";

生成这样的HTML:

<td class="uparrow"><a href="javascript:void(0);" onclick="upVote.call(16); return false;">&#8689;</a>

函数看起来像这样:

function upVote(str) {
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("report_status").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","up_vote.php?serial="+str,true);
xmlhttp.send();
}

当upVote(str)函数调用up_vote.php时,由于某种原因该变量未传递给PHP。

upVote PHP如下所示,当直接通过URL访问时,功能很好:

<?php
// Create Connection
$dbconnect=mysqli_connect("127.0.0.1","user","pass","table");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else {
//  echo "Connection Sucessful<BR><BR>";
}

// escape variables for security
if (isset($_GET['serial']))
{
    $serial = mysqli_real_escape_string($dbconnect, $_GET['serial']);
}

// define SQL call and fetch the result
$sql = "SELECT vote FROM urls WHERE serial = $serial";
$result = mysqli_query($dbconnect,$sql);

if (!$result) {
  die('Select Error: ' . mysqli_error($dbconnect));
}
//echo $sql . "<BR>"; // for error checking the SQL call

    while($row = mysqli_fetch_array($result)) {
        $return = $row['vote']+1;
    }

echo $return;  //Send result back to javascript

//Update the vote count in the database
$sql = "UPDATE urls SET vote=$return WHERE serial = $serial";
$result = mysqli_query($dbconnect,$sql);

if (!$result) {
  die('Update Error: ' . mysqli_error($dbconnect));
}

mysqli_close($dbconnect);
?>
遵守道格

不要使用呼叫,也不要以预期的方式使用它。在这种情况下,我认为您不应该使用它。

调用方法不像来自某些使用它调用子例程之类的较旧语言的“调用”。您通常不使用“调用”来调用函数,只需使用括号即可。Ifabc是一个函数abc()调用该函数,abc(123)并将123作为第一个参数传递。

calljavascript中的in用来调用一个函数(通常是不同的对象)作为“ thisArg”或this您可以认为它可以apply对您的对象执行某些外部功能。实际上,有一个伴随方法apply

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/call

<td class="uparrow"><a href="javascript:void(0);" onclick="upVote(16); return false;">&#8689;</a>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

js将变量传递给返回未定义的函数

将变量传递给PHP函数(即使未定义)

未定义的变量传递给数据

将未定义的变量传递给函数并返回该变量的值

函数未定义 onclick javascript

Javascript onclick函数未定义

PHP-将变量传递给函数,即使未定义

尽管变量已初始化并传递给函数,但仍未定义

我无法将参数传递给变量未定义的函数,Angular 11

javascript:未定义变量与未定义函数

将变量或属性值传递给 JavaScript 对象中的方法返回“未定义”

函数中的变量未定义/Javascript

函数返回未定义的变量Javascript

Javascript jQuery函数未定义变量

将数据传递给视图-未定义变量

传递给 page.evaluate 的变量未定义

将字符串传递给JavaScript函数导致未定义

JavaScript:参数未传递给函数内部的 Array.forEach => 未定义?

传递给插件时函数未定义

传递给与指令绑定的函数的值未定义

未定义 onclick 函数

传递Uncaught ReferenceError的Javascript函数变量在HTMLInputElement.onblur上未定义

传递给新变量对象的 JavaScript 变量以未定义的形式发布到另一个页面

JS变量在传递的函数内未定义(不记得)

Express:4.17:将变量传递给下一个函数返回未定义(中间件)

带有HTML onclick的javascript错误“未定义函数”

将变量传递给Javascript中的onclick函数无效

作为参数传递的JavaScript typeof函数返回未定义

函数将未定义的函数传递给Google Apps脚本中的被调用函数