在Ajax提交之前执行一行PHP

时间:2013-11-05 07:11:09

标签: javascript php jquery ajax wordpress

我在WordPress中有一个功能,可以处理将文件上传到WordPress图库。将表单转换为Ajax后,我意识到文件上传不再有效。问题是,如果我能在Ajax之前执行该函数,它就可以工作。这是代码:

function insert_attachment($file_handler,$post_id,$setthumb='false') {
    if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK){
        return __return_false(); 
    }
    require_once(ABSPATH . "wp-admin" . '/includes/image.php');
    require_once(ABSPATH . "wp-admin" . '/includes/file.php');
    require_once(ABSPATH . "wp-admin" . '/includes/media.php');
    $attach_id = media_handle_upload( $file_handler, $post_id );

    if ($setthumb) 
        update_post_meta($post_id,'_thumbnail_id',$attach_id);
    return $attach_id;
}

这是我想在调用Ajax提交之前执行的调用:

foreach ($_FILES as $file => $array) 
{
    $newupload = insert_attachment($file,$post_id); 
}

原因是$newupload将文件发送到wordpress图库,然后返回attachmentID以插入到Ajax插入的同一个表中。因此,如果代码可以在Ajax之前运行,那么它可以正常工作。这有可能吗?

如何在单击后台运行PHP函数?

1 个答案:

答案 0 :(得分:0)

PHP在服务器上运行而不是在客户端上运行,所以你要求的东西只能在服务器上运行。

所以做一个ajax调用完成,在服务器和回调中使用另一个ajax调用。

CAll ajax1 - >回调 - >打电话给ajax2

喜欢这个

$.ajax({
    url: 'http://www.xxxxxxxxxxxxx',
    data: {name: 'xxxxxx'},
    dataType: 'jsonp',
    success: function(data){

        // do stuff

        // call next ajax function
        $.ajax({ xxx });
    }
});