【问题标题】:Execute a line of PHP before Ajax submissionAjax提交前执行一行PHP
【发布时间】:2013-11-05 07:11:08
【问题描述】:

我在 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函数?

【问题讨论】:

    标签: javascript php jquery ajax wordpress


    【解决方案1】:

    PHP 运行在服务器而不是客户端,所以你问的事情只能在服务器上运行。

    所以在服务器上完成一个 ajax 调用并在回调中使用另一个 ajax 调用。

    调用 ajax1 --> 回调 --> 调用 ajax2

    像这样

    $.ajax({
        url: 'http://www.xxxxxxxxxxxxx',
        data: {name: 'xxxxxx'},
        dataType: 'jsonp',
        success: function(data){
    
            // do stuff
    
            // call next ajax function
            $.ajax({ xxx });
        }
    });
    

    【讨论】:

    • 如果用户不按两次按钮,我该怎么做?
    • 见上例在按钮点击时调用第一个 ajax。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    相关资源
    最近更新 更多