2011-05-12 49 views
0

无论我尝试多少事情,我都无法弄清楚我在做什么错了。我已经通过Google查看了一个相关问题,但没有发现任何具体内容。希望有人能帮助我。ajax表单找不到javascript函数

脚本运行一个外部.js文件,调用音乐专辑列表,然后列出通过ajax选择的专辑歌曲。用户可以编辑删除歌曲。一切工作正常,直到我通过表单提交编辑的信息。当我点击提交按钮,我收到了网页开发人员的错误“updateSong是不是一个函数”

这里的形式:

<?php 
    include("database.php"); 

    $song = $_GET['song']; 

    $query = "SELECT * FROM song INNER JOIN genre ON song.gID = genre.gID INNER JOIN album ON song.alID = album.alID WHERE sID = '$song'"; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_array($result)) { 
    echo (" 

    <form action='#' method='POST' name='updateSong' onSubmit='updateSong(\"$song\")'> 
    <input name='songName' type='text' value='$row[songName]' /> 
    <input type='text' id='genreSearch' name='genre' alt='Genre Search' onkeyup='searchSuggest();' autocomplete='off' value='$row[genreName]'/> 
    <div id='genre_search_suggest'></div> 
    <input name='songURL' type='text' value='$row[songUrl]' /> 
    <input name='sID' type='hidden' value='$row[sID]' /> 
    <input name='Submit' type='Submit' value='Update Song' /> 
    </form> 

    "); 
    } 

    ?> 

这里的JavaScript的:

function updateSong(sID) { 
if(ajax) { 
var song = sID; 
alert("2"); 
ajax.open('get', './song_update.php' + encodeURIComponent(sID)); 
alert("3"); 
ajax.onreadystatechange = function() { 
handleResponse(ajax); 
} 
ajax.send(null); 
return false; 

} 
    } 

//编辑// 下面是它加载到的页面。我删除了这个问题正在处理的不必要的东西。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title>Untitled Document</title> 
    <link href="style.css" rel="stylesheet" type="text/css" /> 
    <link href="artistPageStyle.css" rel="stylesheet" type="text/css" /> 

    <script type="text/javascript" src="javascripts/artistAjax.js"></script> 

    </head> 
    <body> 

    <div id="mediaPlayerBox"> 

    <div id="artistAlbumList"> 
    <?php 
$query = "SELECT * FROM `album` INNER JOIN artist ON album.aID = artist.aID WHERE artist.LoginKey = '$token'"; 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)) { 
echo ("<div id='artistAlbumBox'><div id='artistAlbum'><a href='#' onclick='loadAlbum($row[alID])'><img src='$row[albumCover]' width='75px' height='75px' border='0px' ></a></div><div id='artistAlbumLabel'>$row[albumName]</div></div>"); 
} 
?> 
</div> 

    </div> 

    </body> 
    </html> 
+1

你会得到任何其他的JavaScript错误?看起来你的'updateSong()'函数可能有错误。 – drudge 2011-05-12 18:31:32

+0

不要'回声'HTML(难以调试)。将PHP嵌入HTML。 – 2011-05-12 18:32:38

+0

不,没有其他错误。 – Anna 2011-05-12 18:34:22

回答

0

不是:onSubmit='updateSong("$song")'

+0

它没有引号,但我添加它们只是为了确保仍然是相同的错误。 – Anna 2011-05-12 18:38:08

0

尝试做的onsubmit =“回归updateSong($歌曲)”

+0

增加了它,但仍然没有运气。 – Anna 2011-05-12 18:39:53

0

它说这是不是因为它没有加载,你在显示页面加载外部脚本在所有的功能?

+0

是的,它在文档的头部。在此之前调用的两个函数可以正常工作。唯一的区别是前两个是通过href链接调用,这是通过onSubmit。 – Anna 2011-05-12 18:41:55