通过Jquery.ajax发送表单数据,包括动作参数中的php函数

时间:2015-04-28 09:33:08

标签: javascript php jquery ajax wordpress

我正在开发一个wordpress插件。我有一个php文件,可以控制所有插件和一些php类和css文件。

在主php文件中我创建了一个表单。当表单被提交时,Jquery.Ajax函数捕获表单值并将它们发送到主php文件中定义的php函数。在此之后,jquery必须为您提供警报验证。

我知道如何发送文件imagen。我知道发送文本值很热。

但我不知道如何将文件imagen和文本值发送到我的php主文件中的php函数。这是我的代码:

PHP主文件:
创建表单

function formulario_nueva_ft(){ 
    $cadena="<form id='form_new_ft' method='post' enctype='multipart/form-data'>
    $cadena.="<input id='tit_new_ft' maxlength='40' type='text'>";
    $cadena.="<input id='horas_new_ft' type='text'>";
    $cadena.="<textarea id='requisitos_new_ft' type='text' maxlength='245'> </textarea>";
    $lista=new areatematica;    
    $res=$lista->listarareastematicas(); 
    $cadena.="<select id='cod_at_new_ft'>";
        foreach($res as $valor){
            $cadena.="<option value='.$valor->id_at.'>".$valor->titulo_at."</option>";
        } 
    $cadena.="</select>";
    $cadena.="<select id='modalidad_new_ft'>
        <option value='online'>Online</option>
        <option value='mixta'>Mixta</option>
        <option value='presencial'>Presencial</option>";
    $cadena.="</select>";
    $cadena.="<input type='file' name='new_pdf_ft' id='new_pdf_ft'/>";
    $cadena.="<h4 id='loading' >loading..</h4><div id='message'></div>";
    $cadena.="<input id='btn_new_ft' type='submit' value='Añadir'>";
    $cadena.="</form>";   
    echo $cadena;
    die();
}

这是我捕获ajax响应,在mysql中插入数据并上传图像文件的地方:

function crear_ft(){   
    $tit=$_POST['tit'];
    $hor=$_POST['hor']; 
    $req=$_POST['req'];
    $cod_at=$_POST['cod'];
    $modalidad=$_POST['mod'];
    $pdf=$_POST['pdf'];
    $tabla='ft'; 
    $ft=new curso();
    $sourcePath = $_FILES['new_pdf_ft']['tmp_name'];  
    $targetPath = "archivos/".$_FILES['new_pdf_ft']['name'];  
    move_uploaded_file($sourcePath,$targetPath);

    $ft->set_titulo($tit);
    $ft->set_horas($hor);
    $ft->set_requisitos($req);
    $ft->set_cod_at($cod_at);
    $ft->set_modalidad($modalidad);
    $ft->set_pdf($pdf);
    $ft->set_tabla($tabla);
    $nada=$ft->insertarcurso();  
    echo $nada;
    die();
}

这是我的js代码: 这必须是“实时”方法,因为它是关于出现的元素 在其他js事件之后。

jQuery('#form_new_ft').live("submit", function(e){   
    var file = new FormData(jQuery('#form_new_ft')); 
    e.preventDefault();
    jQuery("#message").empty();
    jQuery('#loading').show();  
    jQuery.ajax({
        url: "/wordpress/wp-admin/admin-ajax.php", 
        type: "POST", 
        contentType: false,
        processData: false,
        cache: false,  
        //how to send img file and string values?
        data: file + { tit:jQuery('#tit_new_ft').val(),
                       hor:jQuery('#horas_new_ft').val(),
                       req:jQuery('#requisitos_new_ft').val(),
                       mod:jQuery('#modalidad_new_ft').val(),
                       cod:jQuery('#cod_at_new_ft').val(),
                       pdf:jQuery('#modalidad_new_ft').val(),  
                       action:'crear_ft'//this is the php function that will          
                                        //handle this data.
                      }, 
        success: function(data){  
            jQuery("#message").html('');
            jQuery("#message").html(data);
        },
        error: function(){
            alert("Error funcion");
        }
    });  
}); 

请帮帮我!!

1 个答案:

答案 0 :(得分:0)

我不明白你的`档案+&#39;。 我希望在数据对象中有一些诸如

之类的东西
img:$("#new_pdf_ft").val(),