1

我知道以前有人问过这个问题,但似乎没有一个解决方案对我有用。

我在 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>

一个简单的表格,几乎没有编辑。然后我有一些 jquery 代码在用户按下“注册按钮”时调用一个 php 文件(Users_cntr.php)进行处理:

$( "#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 文件。我假设我需要做一些发布,我尝试使用过去建议的一些代码,但没有结果。

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

非常感谢你,

迪诺

4

3 回答 3

1

您需要在按钮处理程序中发送要提交的数据:

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

这只是调用服务器上的 php 文件,但第二个“可选”参数是要发送的数据。在这种情况下,我们使用了您的表单id target并告诉 jQuery 它需要被序列化

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

于 2012-09-30T15:51:26.520 回答
1

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

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

php然后从$_POSTas中检索您的数据

$edName=$_POST['edName'];
$edSurname=$_POST['edSurname'];
于 2012-09-30T15:51:54.447 回答
0

对不起,伙计们,我正在为我自己的问题添加一些注释。

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

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

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

有了这个:

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

迪诺

于 2012-09-30T20:35:50.307 回答