2011-11-30 84 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

相关问题