在jquery模式对话框中单击加载外部php文件

我正在尝试在用户单击链接时打开一个jquery模式对话框。 我想将外部php文件加载到对话框中。 我正在使用这个jquery:

$(document).ready(function() { $('#register').dialog({ title: 'Register for LifeStor', resizable: true, autoOpen:false, modal: true, hide: 'fade', width:350, height:275, });//end dialog $('#reg_link').click (function() { open: (function(e) { $('#register').load ('register.php'); }); }); }); 

这个HTML:

 

在.css文件中设置为display:none。

此外,在表单内部,链接被称为:

 Not registered? Sign-Up! 

(我将把表改成div)。

我没有遇到任何关于此代码的错误,但是当我点击链接时没有任何反应。 我从其他堆栈溢出post中获得了上述大部分内容。 我错过了什么吗? 表格html干扰了吗?

问候…

在你的链接中

 Sign-Up! 

你有name="reg_link" ,它应该是id="reg_link" ,即

 Sign-Up! 

所以它可以使用以下代码

 $('#reg_link').click(function(e) { e.preventDefault(); $('#register').load('register.php'); }); 

要使它成为一个可以使用的对话框

 $(document).ready(function() { var dlg=$('#register').dialog({ title: 'Register for LifeStor', resizable: true, autoOpen:false, modal: true, hide: 'fade', width:350, height:275 }); $('#reg_link').click(function(e) { e.preventDefault(); dlg.load('register.php', function(){ dlg.dialog('open'); }); }); }); 

只是一个例子

加载页面后创建对话框.load()用新内容替换容器的内容

你的点击处理程序有语法错误,看起来你传递一个函数和一个对象的组合作为参数,它应该是一个正常的函数。 喜欢

 $('selector').click (function() { //code }); 

您的元素也将reg_link作为名称而非id

 $(document).ready(function() { $('#reg_link').click (function() { $('#register').load ('register.php', function(){ $('#register').dialog({ title: 'Register for LifeStor', resizable: true, modal: true, hide: 'fade', width:350, height:275, });//end dialog }); }); }); Not registered? Sign-Up! 

我并不完全熟悉.dialog()函数,但你使用的是.click()错误。 部分问题是关于花括号{}一些混淆。 它们被用于两个完全不同的东西,你把这两个混合起来。

花括号的第一个用途是指示块的内部:循环的内部,条件的内部,函数的内部。 例如:

 // some code in the global scope function something() { // some different code within this function block } // function's done, we're back in global scope 

第二种用法是对象或关联数组的JSON(JavaScript Object Notation),其中属性或值与以下格式的名称或键配对:

 var jsonSomething = { key1: value1, key2: value2, etc: etcvalue, }; 

当你写$('#reg_link').click (function() { ,你打开一个带有大括号的function块,而不是启动JSON。因此,当你open:好像这一个JSON并且你正在设置open键),某些东西肯定不会像你期望的那样工作(我很惊讶……有点……实际上没有错误)。你需要写什么内容那些花括号是函数的代码。在这种情况下,它可能只是这样:

 $('#reg_link').click (function() { $('#register').load ('register.php'); }); 

一般来说,jQuery经常使用这两个版本,并且经常将它们混合在一起(接受JSON作为参数的函数,或者包含函数回调作为条目的JSON),因此理解哪个是哪个是非常重要的。

编辑:一些谷歌搜索: .dialog()建议您还需要在.load()之后调用它,这意味着块应该看起来像这样:

 $('#reg_link').click (function() { $('#register').load ('register.php').dialog(/*argument(s) here*/); }); 

基于您自己的代码, .dialog()实际上是一个以JSON作为参数的函数示例,因此假设该位正确,完整代码如下所示:

 $('#reg_link').click (function() { $('#register').load ('register.php').dialog({ title: 'Register for LifeStor', resizable: true, autoOpen: false, modal: true, hide: 'fade', width:350, height:275, }); });