Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用带有ajax的前端表单/输入框更新post meta,无需重新加载页面_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript 使用带有ajax的前端表单/输入框更新post meta,无需重新加载页面

Javascript 使用带有ajax的前端表单/输入框更新post meta,无需重新加载页面,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我能够在不使用ajax的情况下更新PostMeta,并使用下面的代码重新加载页面 global $post; if( isset($_POST['submit_meta']) ) { if( ! empty($_POST['change_meta']) ) { update_post_meta($post->ID, 'shorturl', $_POST['change_meta']); } } echo $_POST[ 'change_meta' ]; &

我能够在不使用ajax的情况下更新PostMeta,并使用下面的代码重新加载页面

global $post;
if( isset($_POST['submit_meta']) ) {
    if( ! empty($_POST['change_meta']) ) {
       update_post_meta($post->ID, 'shorturl', $_POST['change_meta']);
    }
}
echo $_POST[ 'change_meta' ];


<form method="post" action="" id="shortform">
<input style="/*display:none;*/" id="shortUrlInfo2" type="text" name="change_meta" value="<?php echo get_post_meta( get_the_ID(), 'shorturl', true ); ?>">
<input id="btn_url" type="submit" name="submit_meta" value="Confirm" />
</form>
global$post;
如果(isset($\u POST['submit\u meta'])){
如果(!空($\u POST['change\u meta'])){
更新帖子元($post->ID,$shorturl',$帖子['change\u meta']);
}
}
echo$_POST['change_meta'];
';
变量微调器=“”;
$('.pp input')。单击(函数(){
var p=$(this.parent('p');
p、 查找('.response').html('');
$.post(ajaxurl{
“操作”:“更新自定义字段”,
'post_id':p.find('input[name=“post_id”]”)。val(),
“meta1”:p.find('input[name=“meta1”]”)。val(),
'meta2':p.find('input[name=“meta2”]”)。val()
},功能(回应){
p、 查找('.response').html(response);
}“文本”);
});
});

分步骤调试问题:

您的AJAX调用正在进行吗

  • 如果不是
    • 检查JavaScript错误(如果有)
    • 检查您的函数是否正确连接
  • 如果有的话
    • 检查您是否在JavaScript中获得了要发布的正确元素值
    • 在PHP函数中打印$\u POST值,以验证是否获得了正确的值
您可以使用type='hidden'而不是style=“display:none;”“来输入元素

您正在使用类名访问jQuery中的元素,而应该使用元素的ID


出于安全考虑,请始终在表单中使用nonce。

请编写您拥有的AJAX代码tried@AshwaniGoyal完成,谢谢。是否在您需要的特定页面调用了
pp_脚本
?是。事实上,我只是直接粘贴了jquery以使用它进行测试。
add_action( 'wp_ajax_update_custom_fields', 'update_custom_fields' );
add_action( 'wp_ajax_nopriv_update_custom_fields', 'update_custom_fields' );

function update_custom_fields() {
    $post_id = $_POST[ 'post_id' ];
    $meta1 = $_POST[ 'meta1' ];
    $meta2 = $_POST[ 'meta2' ];

    update_post_meta( $post_id, 'meta1', $meta1 );
    update_post_meta( $post_id, 'meta2', $meta2 );

    die('Updated');
}

add_action('wp_footer', 'pp_script');

function pp_script() {
    wp_enqueue_script('jquery');
?>

<script>
jQuery(document).ready( function($) {
    var ajaxurl = '<?php echo admin_url( 'admin-ajax.php' ); ?>';
    var spinner = '<?php echo admin_url( 'images/spin.gif' ); ?>';
    $('.pp input').click( function() {
        var p = $(this).parent('p');
        p.find('.response').html('<img src="'+spinner+'" />');
        $.post(ajaxurl, {
            'action': 'update_custom_fields',
            'post_id': p.find('input[name="post_id"]').val(),
            'meta1': p.find('input[name="meta1"]').val(),
            'meta2': p.find('input[name="meta2"]').val()
        }, function( response ) {

            p.find('.response').html(response);

        }, 'text');
    });
});
</script><?php
}
<input style="/*display:none;*/" name="post_id" type='text' id='post_id' value='7' />
<input style="/*display:none;*/" name="meta1" type='text' id='meta1' value='' /> 
<input style="/*display:none;*/" name="meta2" type='text' id='meta2' value='' /> 
<input type="button" id="meta1submit" value="meta1submit" />