简体   繁体   English

在jquery模式窗体对话框中获取ajax响应

[英]get ajax response in jquery modal form dialog

I can't get the ajax response when submitting a modal dialog form. 提交模态对话框表单时,我无法获得ajax响应。 It works perfectly when the form is not modal. 当表单不是模态时,它可以完美工作。

The form: 表格:

<div id="form2" style="display: none">
    <form id="objectInsert" action="element/create" method="POST" enctype="multipart/form-data">  
        <div class="form-group">
            <label for="name">Name</label>
            <input class="form-control" type="text" name="name" id="name"/>
        </div>

        <div class="form-group">
            <label for="description">Description</label>
            <textarea class="form-control" name="description"></textarea> 
        </div>
    </form>

Here i get the ajax success part in the console! 在这里,我在控制台中获得了ajax成功部分!

$("#objectInsert").submit(function(e) {
    e.preventDefault();
    resetErrors();
    var form = this;
    var url = $(this).attr('action');
    var data = new FormData($(this)[0]);
    $.ajax({
        type: 'POST',
        url: url,
        data: data,
        dataType: 'json',
        cahe:false,
        processData: false,
        contentType: false,
        success: function(resp) {
            console.log(resp);//Working
        },
        error: function() {
            console.log('there was a problem checking the fields');
        }
    });
});

Here i get the ajax error part in the console! 在这里,我在控制台中获得了ajax错误部分! can someone tell me where i'm doing wrong? 有人可以告诉我我做错了什么吗?

    $("#add_element").click(function(){
        $("#form2").dialog({
            modal:true,
            width:400,
            buttons:{
                Send:function(e){
                    e.preventDefault();
                    var form = $("#objectInsert");
                    var url = form.attr('action');
                    var data = new FormData(form[0]);
                    $.ajax({
                        type: 'POST',
                        url: url,
                        data: data,
                        dataType: 'json',
                        cahe:false,
                        processData: false,
                        contentType: false,
                        success: function(resp) {
                            console.log(resp);//not working
                        },
                        error: function(xhr, status, error) {
                            console.log('there was a problem checking  the fields');
                            console.log(xhr);
                            console.log(error);
                        }
                    });
                    return false;

                },
                Cancel:function(){
                    $(this).dialog("close");
                }
            }
        });
    });

The controller 控制器

public function create() {
    try{
        $this->form = new Form();
        $this->form->post('name');
        $this->form->val('isEmpty', 'name');
        $this->form->post('description');
        $this->form->val('isEmpty', 'description');

        $this->form->fetch();
        $this->form->submit();

        $data = $this->form->get_postData();

        $this->model->insert($data);

        echo json_encode('success');
    } catch (Exception $ex) {
        $errors = $this->form->get_error();
        $_SESSION["errors"] = $errors;
        //This is for ajax requests:
        if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&  
                strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) 
                == 'xmlhttprequest') {
            echo json_encode($_SESSION['errors']);
            exit;
        }

        foreach ($_SESSION["errors"] as $errors){
            echo $errors;
            echo '<br/>';
        }exit;
    }
}

see this code you have not closed the function block 看到此代码,您尚未关闭功能块

success: function(resp) {
         console.log(resp);//not working
       },//This is not closed for success function
error: function() {
         console.log('there was a problem checking the fields');
       }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM