簡體   English   中英

通過對話框從Ajax發送php生成的表單數據

[英]Sending php generated form data via Ajax from Dialog box

嗨,大家有幫助嗎? 我有一個單擊按鈕觸發的對話框,該對話框調用我的php腳本以生成需要填寫和提交的表單。 我想通過Ajax進行發送和確認。 我已經進行了幾天的編碼和研究,但是StackExchange或其他網站上沒有任何幫助。 這是代碼:

對話框片段;

$k('#CreateTable').click(function(e){
          e.preventDefault();
         var Call =  $k('#CreateTable').attr('value');//.attr('id');

         var util = $k(this).attr('id');//.attr('id');

         $k('#dialog').dialog({
             autoOpen: false,
            title: 'Running Utility for: '+Call,
            modal: true,
            width: 450,
            close: function(event, ui) {
             $k("#dialog").dialog('destroy');//event.target
            }//END CLOSE

        }).dialog('open');
        var utility = { 'utility' : util };
        $k.ajax({
                  type: "post",
                  url: "inc/runUtilities.php",
                  dataType: "html",
                  data: utility,
                  success: function(data) {
                        $k('#DlgTxt').html(data).fadeIn('slow');
                  }
        });
            //return false;
        });//END DIALOG

PHP代碼段;

$show .=  "<form id='cContact' name='cContact' method='post'>";
    // action='".$_SERVER['REQUEST_URI']."'
    $show .= '<table align="center" width="425" border="0">
       ';

        $query = "SHOW COLUMNS FROM `".$_SESSION['WorkTable']."`"; 
        if($output = mysqli_query($this->MySQLCxn->MySQLCxn, $query))
        {
            $columns = array();
            while($row = mysqli_fetch_assoc($output))
            {
                if($row['Field'] == 'id') {}
                else
               $show .= '
                <tr>
                  <td width="175"><div align="right">'.@$row['Field'].':</div></td>
                  <td width="155">
                    <input type="text" name="'.@$row['Field'].'" placeholder="'.@$row['Field'].'" />
                  </td>
                  <td width="115">&nbsp;</td>
                </tr>
                ';
            }
        }


    $show .= '
        <tr>
          <td>Submit </td><td>

          <button type="button" id="cContactSbmt" onclick="doSubmitForm(this); return false;" name="cContactSbmt" value="cContactSbmt">Create contact</button>


          <!-- <input type="submit" class="button" value="Save" name="submit"> -->
          </td> <td>&nbsp;</td>
        </tr>
      </table></form>
      <div id="thanks">

      </div>
       ';

我當前正在使用的JQuery試圖使其調用我的php來處理正在發送的表單。

var $j = jQuery.noConflict(); 

(function($j){
 $j(document).ready(function() {
    $j("#cContactSbmt").click(function(e){//'click',
         e.preventDefault();
             alert('cContactSbmt clicked...');
         $j.ajax ({
          type:"POST",
          url:"inc/runUtilities.php",
          data: $j(this).serialize(),
          success: function(msg){
            $j("#thanks").html(msg)
            $j(this).modal('hide');
          },
          error: function(){
            alert("failure");
          }
        });
      });


});

})($ j);

由於某種原因,它也無法正常工作,也不會在控制台中顯示任何內容。 再次:我有一個對話框,該對話框通過Ajax填充並生成一個php,該php需要提交給另一個php腳本來對其進行處理並回復對話框。 有什么建議么?

您的php ist不輸出(“回顯”)任何東西。 您需要echo任何您想要返回到ajax調用的內容。

更新:加上調試,嘗試在每個success回調中記錄返回的數據,例如:

success: function(data) {
    console.log(data);
}

您可能需要在PHP代碼段的末尾添加回顯。

echo $show;

然后,此回顯的html將在您的ajax函數中的成功回調函數中可用...作為變量“ data”

success: function(data) {
  $k('#DlgTxt').html(data).fadeIn('slow');
}

另外,您可能需要在點擊函數中使用jQuery .on()來提交表單。

http://api.jquery.com/on/

$j("body").on("click", "#cContactSbmt", function(){

});

希望這可以幫助....

嗨,大家好,我進行了以下更改:

<button id="cContactSbmt" onClick="doContactsCreate(\'#cContact\')" type="button" class="form-submit"  name="cContactSbmt" value="cContactSbmt">Create contact</button>

我將帶有回調的onclick方法添加到函數doContactsCreate(\\'#cContact \\'),該函數具有傳遞給它的表單的ID。

function doContactsCreate(obj)
{
     alert(obj+': cContactSbmt clicked...');
    /* */
    var frmData = $k(obj).serialize();
         $k.ajax ({
          type:"POST",
          url:"inc/runUtilities.php",
          data: frmData,
          success: function(data){
          $k("#thanks").html(data);
          console.log(data);
            $k(obj).modal('hide');
          },
          error: function(){
            alert("failure");
          }
        });

}   

我剛剛將JQuery代碼封裝在此函數定義中,並將其放置在

(function($k){
 $k(document).ready(function() {
//rest of JQuery code
})($k);

不知道為什么,但我認為這是主要問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM