2011-11-30 83 views
0

我有一個表單,當用戶提交此表單時,它應該將數據傳遞給使用AJAX的函數。然後,在對話框中將該結果顯示給用戶。我正在使用CakePHP(1.3)和jQuery來嘗試完成這一任務,但我感覺我正在奔跑。使用AJAX,jQuery和CakePHP在對話框中顯示消息

的形式最終將被用於與標籤上傳圖片,但現在我只是想看到一個消息框彈出..

形式:

<?php                                                                    
    echo $this->Form->create('Image', array('type' => 'file', 'controller' => 'images', 
          'action' => 'upload', 'method' => 'post')); 
    echo $this->Form->input('Wallpaper', array('type' => 'file')); 
    echo $this->Form->input('Tags'); 
    echo $this->Form->end('Upload!'); 
?> 

的AJAX:

$(document).ready(function() { 
    $("#ImageUploadForm").submit(function() {                                                         
    $.ajax({ 
     type: "POST", url: "/images/upload/", 
     data: $(this).serialize(), 
     async: false, 
     success: function(html){ 
     $("#dialog-modal").dialog({ 
      $("#dialog-modal").append("<p>"+html+"</p>"); 
      height: 140, 
      modal: true, 
      buttons: { 
      Ok: function() { 
       $(this).dialog('close'); 
      } 
      } 
     }) 
     } 
    }); 
    return false; 
    }); 
}); 

注意:如果我把$.ajax的,但$("#ImageUploadForm").submit(function() {$("#dialog-modal").dialog({ height: 140, modal: true });外註釋掉$.ajax東西,我會看到一個對話框彈出,然後我必須點擊它才能消失。在此之後,它不會給位置向前/images/upload/

是AJAX調用的方法:

public function upload() 
    { 
    $this->autoRender = false; 

    if ($this->RequestHandler->isAjax()) 
    { 
     echo 'Hi!'; 
     exit(); 
    } 
    } 

$這個 - > RequestHandler-> isAjax()似乎做任何絕對沒有,或者它總是返回假。我從來沒有以此作爲條件輸入if語句。

感謝您的幫助,如果您需要更多信息,請告訴我。

回答

1

試試這個:

$(document).ready(function(){ 
$.ajax({ 
    type: "POST", url: "/images/upload/", 
    data: $(this).serialize(), 
    async: false, 
    success: function(html){ 
    //First you must append to div: 
$("#dialog-modal").append("<p>"+html+"</p>"); 
    $("#dialog-modal").dialog({   
     height: 140, 
     modal: true, 
     buttons: { 
     Ok: function() { 
      $(this).dialog('close'); 
     } 
     } 
    }); //dialog 
    }//success 
});//ajax 

注的第一句話:

$("#dialog-modal").append("<p>"+html+"</p>"); 

它不可能是一個propertie。你必須通過一個對象作爲參數對話框()函數,所以一個對象的屬性或成員的樣子:

{ 
height:140, 
buttons:{}, 
anotherPropertie: 'value' 
} 

如果AJAX(後調用對話框()函數),對話框將是空的,因爲意志在ajax()中聲明的success()函數之前執行。

+0

非常感謝,這工作完美。我對AJAX/jQuery有點新鮮,所以我認爲它可能很簡單。 – LainIwakura

相關問題