2013-11-05 24 views
0

我在WordPress中有一個處理文件上傳到WordPress圖片庫的功能。將表單轉換爲Ajax後,我意識到文件上傳不再有效。事情是,如果我可以在Ajax之前執行該函數就可以運行。下面是代碼:在Ajax提交之前執行一行PHP

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函數?

回答

0

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 }); 
    } 
}); 
+0

我該怎麼辦,如果沒有用戶按下按鈕兩次? –

+0

請參閱上面的示例在按鈕單擊時調用第一個ajax。 – dev