从后Meta AJAX管理员内的数组中删除值

时间:2017-04-05 作者:nick pocock

我在贴子元中有一个用于贴子的数组。我希望能够列出管理区域中数组的每个单独元素,并从该数组中删除一个值。

当前,我循环遍历每个数组元素,并尝试使用ajax删除它们,当我单击delete按钮时,它会将值发送到我的ajax操作,然后加载所需的post meta,删除该值,然后更新post meta。然而,我的控制台。日志(数据)每次都会返回0,并且不会使div褪色。有人知道为什么吗?

function print_pdfs_attached() {

    global $post;

    $attached_pdfs = get_post_meta( $post->ID, \'pdf_upload_url\', true ); ?>

    <p>All PDFs attached to the article</p>

    <?php
    $i=0;
    if($attached_pdfs) { 
        foreach($attached_pdfs as $pdf) { ?>
            <div id=<?php echo $pdf; ?>>

                <p><?php echo $pdf; ?></p>

                <input type="hidden" value="<?php echo $pdf; ?>" id="ajaxtestdel_postid<?php echo $i ?>">
                <tr>
                    <th scope="row"><label for="del">delete</label></th>
                    <td><input type="button" name="del" id="del<?php echo $i; ?>" value="delete" class="button"></td>
                </tr>
                <script>
                  jQuery(\'#del<?php echo $i; ?>\').on(\'click\', function(){
                    var post = jQuery(\'#ajaxtestdel_postid<?php echo $i ?>\').val(); // get post id from hidded field
                    console.log(post);
                    jQuery.ajax({
                      url: \'admin-ajax.php\', // in backend you should pass the ajax url using this variable
                      type: \'POST\',
                      data: { action : \'ajaxtestdel\', postid: post },
                      success: function(data){
                        console.log(data);
                        jQuery("#<?php echo $pdf; ?>").fadeOut( "slow" );
                      }
                    });
                  });
                </script>
             <?php
             $i++; 
             ?>
         </div>
         <?php
        } 
    }
    else { ?>
        <p>No PDFs are currently attached to this article</p> <?php
    }
}

function ajaxtestdel(){
    global $post;

    $currentPdfs = get_post_meta( $post->ID, \'pdf_upload_url\', true );
    $postValue = isset($_POST[\'postid\']) ? $_POST[\'postid\'] : \'\';
    $array_without_strawberries = array_diff($currentPdfs, array($postValue));
    update_post_meta( $post->ID, \'pdf_upload_url\', $array_without_strawberries );
}

add_action(\'wp_ajax_ajaxtestdel\', \'ajaxtestdel\');

1 个回复
SO网友:Welcher

您没有打印AJAX回调中的任何内容。正在尝试使用wp_send_json_success:

function ajaxtestdel(){
    global $post;
    $currentPdfs = get_post_meta( $post->ID, \'pdf_upload_url\', true );
    $postValue = isset($_POST[\'postid\']) ? $_POST[\'postid\'] : \'\';
    $array_without_strawberries = array_diff($currentPdfs, array($postValue));
    update_post_meta( $post->ID, \'pdf_upload_url\', $array_without_strawberries );

    // Send something back to AJAX
    wp_send_json_success();
}
我有一种感觉,也许您的jQuery选择器对于淡出是不正确的-jQuery("#<?php echo $pdf; ?>") 什么是$pdf 它是有效的id名称吗?

希望这有帮助!

相关推荐

当调用Get_Current_User_id()时,跨域AJAX请求总是返回0;

我目前使用localhost,当我想测试对web服务器的ajax请求时,函数get\\u current\\u user\\u id()总是返回0。然而,当我从我的网站发出ajax请求时,它是有效的。在浏览器中打开文件还会返回当前wp\\U用户id。我向其发出请求的文件:<?php require_once $_SERVER[\'DOCUMENT_ROOT\'] . \'/wp-load.php\'; echo get_current_user_id(); 我的身体里有co