Ajax call undefined index

时间:2021-01-25 作者:Madeirense

我试图通过Ajax调用获取ACF字段的内容。这是我的回调函数:

function my_ajax_request() {

      $id = $_POST[\'id\'];

      if( have_rows(\'carousel_slide\') ):

    // Loop through rows
    while( have_rows(\'carousel_slide\') ) : the_row();

     // Load sub Fields
     $cta_text = get_sub_field(\'cta_text\');

     // Allowed html
     $allowed_html = array(
       \'strong\' => array()
     );
    ?>

    <div class="cta-popup">
      <!-- Modal -->
      <div class="modal fade" id="cta-modal-1<?php echo $id; ?>" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog" role="document">
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                <span aria-hidden="true">&times;</span>
              </button>
            </div>
            <div class="modal-body">
              <p><?php echo wp_kses( $cta_text, $allowed_html );?></p>
            </div>
          </div>
        </div>
      </div>
    </div>
<?php
   // End loop
   endwhile;
   // End if
 endif; ?>

</div><!-- end carousel-inner -->

<?php
die();
}
add_action( \'wp_ajax_my_ajax_request\', \'my_ajax_request\' );
这是我的Ajax调用:


  jQuery(\'.btn\').click(function () {
    var id = jQuery(this).attr(\'data-target\').replace(\'#\', \'\');
    console.log(id);
    jQuery.ajax({
        url: ajaxurl.url,
        type: \'POST\',
        data: {
            action: \'my_ajax_request\',
            id : id
        },
        success: function (result) {
           jQuery(\'.modal\').attr(\'id\',id);
           jQuery(id).modal(\'show\');
           alert(id);
        },
        error: function () {
            alert("error");
        }
    });

});
});
id来自一个按钮,单击该按钮应打开引导模式。然而,我不断收到以下通知:

Notice: Undefined index: my_id in /Applications/MAMP/htdocs/wordpress/wp-content/themes/my-teme/functions.php on line 61

想法是在我的\\u Ajax\\u请求()上使用Ajax调用的id。我错过了什么?

1 个回复
SO网友:Tom J Nowell

有两个问题:

问题1您的AJAX端点查找my_id:

      $id = $_POST[\'my_id\'];
但是您的javascript发送id:

            id : my_id
重要的是:

id != my_id

它们不匹配。没有$_POST[\'my_id\'], 这就是为什么会收到PHP通知

问题2您正在使用$_POST 但代码不会发出POST请求:

type: \'POST\',
没有type 参数,jQuery文档表示要使用method: \'POST\'

另一方面,REST API端点可能会抱怨my_id 参数丢失,它会抱怨没有GET 端点存在,使这两个问题在人类可读文本中都非常清楚。

即使AJAX端点开始工作,也可以考虑迁移到REST API端点,它将为您提供:

人类可读的错误消息列出参数的专用字段,谁可以访问这些参数,所有这些都是由WP Core实现的,这样你就知道你没有犯错误或忘记什么,一个非常永久的URL,更好的身份验证,以及使用附加插件进行远程API访问的选项,更容易调试代码

相关推荐

防止默认设置不停止页面刷新。在WordPress站点中使用AJAX向php传递表单信息和从php传递表单信息

我已经看到了一些可以追溯到2011年左右的方法,以便采用表单并通过ajax发布其数据。jquery。我已经尝试了几次,尽管使用了preventdefault functions.我试图从我的表单中获取数据,让jQuery通过定位实际的表单id来侦听表单提交,然后调用PHP函数,以便将数据发布到db。最终,除了重新加载页面之外,什么都不会发生。由于这是一个可湿性粉剂页面,我知道一些功能和处理不同于常规网页。像ajax url这样的东西可以传递回函数等。这就是我在这里发布此内容的原因。表格:function