2012-09-30 142 views
1

我知道这个问题之前已经被问过了,但没有一个解决方案似乎对我有用。在jQuery对话框中提交表单

我有一个jQuery UI的对话框内的一种形式:

<!-- Dialog: Register new user--> 
<div id="dialogForUser" title="Register new user"> 
    <form id="target" action="" method="post" style="HEIGHT: 100%"> 
    <div class="form_settings"> 
    <h3>Enter user details:</h3> 

    <p><span>name</span> 
     <input width=150px id ="edName" name="edName" value="<?php echo htmlentities($name); ?>" /> 
    </p> 
    <p><span>surname</span> 
     <input width=150px id ="edSurname" name="edSurname" value="<?php echo htmlentities($surname); ?>" /> 
    </p> 
    <p><span>username</span> 
     <input width=150px id ="edUsername" name="edUsername" value="<?php echo htmlentities($username); ?>" /> 
    </p> 
    <p><span>password</span> 
     <input width=150px id ="edPassword" name="edPassword" value="<?php echo htmlentities($password); ?>" /> 
    </p> 
    <p><span>confirm password</span> 
     <input width=150px name="edConfirmPassword" /> 
    </p> 
    <p><span>security question 1</span> 
     <input width=150px name="edSecurityQuestion1" /> 
    </p> 
    <p><span>answer</span> 
     <input width=150px name="edSecurityAnswer1" /> 
    </p> 
    <p><span>security question 2</span> 
     <input width=150px name="edSecurityQuestion21" /> 
    </p> 
    <p><span>answer</span> 
     <input width=150px name="edSecurityAnswer2" /> 
    </p> 
    <p><span>security question 3</span> 
     <input width=150px name="edSecurityQuestion3" /> 
    </p> 
    <p><span>answer</span> 
     <input width=150px name="edSecurityAnswer3" /> 
    </p> 
    <p><span>company name</span> 
     <input width=150px name="edCompanyName" value="<?php echo htmlentities($companyName); ?>" /> 
    </p> 
    <p><span>address line 1</span> 
     <input width=150px name="edAddress1" value="<?php echo htmlentities($address1); ?>" /> 
    </p> 
    <p><span>address line 2</span> 
     <input width=150px name="edAddress2" value="<?php echo htmlentities($address2); ?>" /> 
    </p> 
    <p><span>address line 3</span> 
     <input width=150px name="edAddress3" value="<?php echo htmlentities($address3); ?>" /> 
    </p> 
    <p><span>city</span> 
     <input width=150px name="edCity" value="<?php echo htmlentities($city); ?>" /> 
    </p> 
    <p><span>county</span> 
     <input width=150px name="edArea" value="<?php echo htmlentities($area); ?>" /> 
    </p> 
    <p><span>post code</span> 
     <input width=150px name="edPostalCode" value="<?php echo htmlentities($postalCode); ?>" /> 
    </p> 
    <p><span>country</span> 
     <input width=150px name="edCountry" value="<?php echo htmlentities($country); ?>" /> 
    </p> 
    <p><span>telephone</span> 
     <input width=150px name="edTelephone" value="<?php echo htmlentities($telephone); ?>" /> 
    </p> 
    <p><span>fax</span> 
     <input width=150px name="edFax" value="<?php echo htmlentities($fax); ?>" /> 
    </p> 
    <p><span>e-mail</span> 
     <input width=150px name="edEmail" value="<?php echo htmlentities($email); ?>" /> 
    </p> 
    <p><span>website</span> 
     <input width=150px name="edWebsite" value="<?php echo htmlentities($website); ?>" /> 
    </p> 
    </div> 
</form> 

一个简单的形式与一些修改。然后,我有处理调用PHP文件(Users_cntr.php)一些jQuery代码,当用户按下“注册按钮”:

$("#dialogForUser").dialog({ 
      autoOpen: false, 
      show: "blind", 
      hide: "explode", 
      buttons:[ 
           {text: "Register", click: function() { 
            $.ajax({url:Users_cntr.php ,success:function(result){$("button").html(result);}}); 
                              } 
           }, 
           {text: "Cancel", click: function() { $(this).dialog("close"); }}, 
          ] 
    }); 


    $("#openerForUser").click(function() { 
     var dialogWidth = $(this).attr('dialogWidth'); 
     var dialogHeight = $(this).attr('dialogHeight'); 

     $("#dialogForUser").dialog("option", "width", dialogWidth); 
     $("#dialogForUser").dialog("option", "height", dialogHeight); 
     $("#dialogForUser").dialog("open"); 
     return false; 
    }); 

你可以使用Ajax调用看到PHP文件被称为(我不得不承认我不明白它是如何工作的!)。

所有的PHP所做的就是创建一个新用户并将其插入到数据库中。我的问题是,我不知道如何将ui对话框的值传递给php文件。我想我需要做一些张贴,我尝试使用过去建议的一些代码,但没有结果。

你有没有试过在你的项目中做类似的事情?你能帮我吗?

非常感谢你,

迪诺

+0

作为提示,检查出的[序列功能](HTTP://api.jquery。com/serialize /)的jQuery,它可能会帮助你一点...另外,请查看[ajax文档](http://api.jquery.com/jQuery.ajax/) –

+0

您必须选择请求类型,'post'或'get'并传递数据,如上面评论的文档@Zathrus Writer中所引用的那样。 –

+0

@ Mt.Schneiders技术上没有。 '$ .ajax'会默认'type'属性为'GET',所以没必要这样做。 – Brombomb

回答

1

您需要发送你想在你的按钮处理程序提交资料:

$.post('Users_cntr.php', $('#target').serialize(), function(result){ 
    $("button").html(result); 
});   

这只是调用服务器上的PHP文件,但第二个“可选”参数是要发送的数据。在这种情况下,我们已经采取的形式与idtarget告诉jQuery的它需要serialized

我改变了你的$.ajax方法$.post,因为它是同一件事的快捷方式并包装data-typetype性能。你可以在这里阅读更多: jQuery Post

+0

非常感谢,这让我发疯...... – user1536396

+0

对不起,再次打扰你,但我有另一个问题。提交作品只有一次。如果我关闭对话,请再次打开它。填写编辑并点击按钮,没有任何反应?即使我关闭浏览器并再次打开它?任何想法?谢谢... – user1536396

+0

回答了我自己的问题,不用担心(看最后一篇文章!)。再次感谢您的帮助 – user1536396

1

如果你想与ajax传递数据,那么你可以使用serialize(),即

$.ajax({ 
    url:'Users_cntr.php', 
    type:'post', 
    data: $("#target").serialize(), 
    success:function(result){ 
     $("button").html(result); 
    } 
}); 

然后从$_POST撷取您的数据php作为

$edName=$_POST['edName']; 
$edSurname=$_POST['edSurname']; 
0

对不起,我为自己的问题添加了一些笔记。

首先感谢大家的帮助,非常感谢。

我的代码有另一个bug:它只提交一次。这是因为您需要更改以下内容;

$(this).dialog("close"); 

与此:

$(this).dialog("destroy").remove(); 

恐龙