Javascript函数未定义

时间:2013-04-17 02:02:27

标签: php javascript undefined-function

我从Chrome开发人员工具

收到以下错误
  

未捕获的ReferenceError:未定义searchRequests   searchProcess.php:174 onclick。

当我点击engine.php生成的超链接时,我没有收到来自searchRequests功能的提醒。我不确定问题是什么,我感谢任何建议。这是我的代码:

searchProcess.php

<?php
include '../include/engine.php';
?>

<html>
<head>
<script type="text/javascript" src="../jQuery.js"></script>
<script type="text/javascript">
$( document ).ready(function() {

    var instrID;
    var cat;

    $(window).load(function(){

    });

    var newheight = $(window).height();


    function searchRequests(instr)
    {

        alert("in searchResults");
        instrID = instr;
        alert(instrID);

    }

    });

</script>
</head>
<body>
<?php
    drawSearchResults($var1, $var2, $var3, $var3, $var4); 
?>
</body>
</html>

engine.php

<?php
function drawSearchResults($var1, $var2, $var3, $var4, $var5)
{
while($row = mysql_fetch_assoc($result))
{
    echo ("<tr>");
        echo ("<td id='InstrumentID'><a href='javascript:void(0);' onclick='searchRequests($row[InstrumentID])'>$row[InstrumentID]</a></td>");
    echo ("</tr>");
}
?>

2 个答案:

答案 0 :(得分:2)

问题是函数searchRequests不在$(document).ready()范围之外。将其移到$(document).ready()之外。

一般情况下,你不应该在html中嵌入你的javascript。好多了:

$('#InstrumentID a').click(someFunctionThatIsInScope);

您可以将该代码放在$(document).ready()块中。此外,您调用的函数将获得一个事件对象,您可以使用该对象从标记中获取可能需要的任何值。

答案 1 :(得分:0)

因为它是私人的。您将它隐藏在全局范围内,因为它位于ready函数内。不要使用内联事件处理程序,使用on()来附加事件!