开始jQuery帮助
我正在尝试使用php和jQuery创建一个简单的MySQL Admin。 我从来没有使用过jQuery,所以我的代码可能非常值得。 我对代码的问题是,当我点击按钮时,没有任何反应。 我知道偶然的火,因为如果我在firefox中打开html文件(不是使用文件:///的东西)并点击它,它会在框中显示我的PHP代码我希望返回的内容进入。 我要做的第一件事是连接到指定的数据库并返回表的列表。 inheritance我的代码
的index.html
var Server = 'None'; var Username = 'None'; var Password = 'None'; var Database = 'None'; $("#connect").click(function() { Server = $('#server').val(); Username = $('#username').val(); Password = $('#password').val(); Database = $('#database').val(); loadTables(); }); function loadTables() { $.get("display.php", { server: Server, username: Username, password: Password, database: Database, content: "tables" }, function(data){ html = ""; $(data).find("table").each(function() { html = html + "- " + $(this).text() + "
"; }); html = html + "
"; $('#content').html(html); } ); }
Display.php的
<? mysql_connect($_GET['server'], $_GET['username'], $_GET['password']) or die("Error: Could not connect to database!
" . mysql_error()); mysql_select_db($_GET['database']); $content = $_GET['content']; if ($content == "tables") { $result = mysql_query("show tables"); $xml = "\n"; $xml .= ""; while ($row = mysql_fetch_assoc($result)) { $xml .= "" . $row['Tables_in_blog'] . "
"; } $xml .= ""; header('Content-type: text/xml'); echo $xml; } ?>
编辑:我已经根据几个答案的混合更新了代码,但我仍然遇到同样的问题。
好吧,首先不要这样做,而“我”是指:
- 不要在Javascript中放置数据库连接细节; 和
- 在不进行消毒的情况下,请勿使用用户的输入。 你只是要求被黑客入侵。
话虽这么说,你的主要问题似乎是$(#content)
应该是$("#content")
。 同样在按钮上点击一下并不是jQuery方式。 尝试:
编辑:对上面的小修正并使用此脚本进行测试:
header('Content-Type: text/xml'); echo "\n"; ?> $tables = array('one', 'two', 'three', 'four'); foreach ($tables as $table) { echo " $table
\n"; } ?>
我希望这有帮助。 我注意到你的代码有三件事:
1)display.php不关闭标签。
2)您使用$(#content)引用’content’div,这会引发Javascript错误。 确保将此选择器封装在引号中,例如$(’#content’)。
3)我不确定“$(”table“,xml).text()”。 相反,使用非常酷的find(’tag’)。each()语法来遍历XML响应。 这对我来说可以替代你的函数(数据)语句:
function(data) { htmlTable = ''; $(data).find('table').each(function(){ htmlTable = htmlTable + '- ' + $(this).text() + '
'; }); htmlTable = htmlTable + '
' $('#content').html(htmlTable); });
这是一段代码:
但在我看来,使用JSON而不是xml更好更容易,使用它更容易(get函数的最后几行):
function(data){ $('#content').html('
'); var contentUL = $('#content>ul'); $.each(data.tables, function(){ $('').html(this).appendTo(contentUL); }); }, 'json');
您也可以使用jquery.form插件提交表单。 它还可以使用响应更新指定的元素,例如:
$(document).ready(function() { $('#connectForm').ajaxForm({ target: '#content' }); });
我不确定究竟是什么问题。 但是你不需要$ .get回调中的$(function(){}) – 将函数传递给$()实际上将事件处理程序绑定到“ready”事件,该事件仅在页面首次加载时被调用。 您只需提供一个将XML作为参数的函数(此处您将其作为“数据”,但将其称为“xml”?)并使用它。 我首先阅读http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype和http://docs.jquery.com/Events/ready#fn 。 此外,安装Firebug并检查错误控制台以查看JavaScript出现问题的位置 – 您可以转到“脚本”选项卡并设置断点以查看代码的执行情况,以了解出现问题的地方。
你应该使用jQuery.forms.js插件。 http://malsup.com/jquery/form/
$(#content) // This is definitely a problem.
选择器必须是字符串,因此$("#content")
是正确的。