Wordpress ajax->php 请求

Posted

技术标签:

【中文标题】Wordpress ajax->php 请求【英文标题】:Wordpress ajax->php request 【发布时间】:2016-08-05 04:13:45 【问题描述】:

抱歉,如果有这样的主题,但我没有找到解决我的问题的方法。所以我们走吧... =)(我开始学习php了)。

这是事件日历,它将是 WP 的小部件。它需要工作 onclick 事件。所有代码都写在一个文件中(这是插件)。在小部件(在右侧边栏)中,我编写了 phpcode(用于测试),我在其中调用了这个函数。 http://herytire.esy.es/calendar 您可以推送“2”或“5”日期,这些日期在 mysql 中有数据。 一切正常,但我从来没有在 wordpress 中使用 php,并且这段代码有问题。

问题是:

当我在简单的 html 页面中使用此代码时,您可以在上面的链接中看到它,一切正常,我点击当天得到结果,但在 wp 中,alert(for error),返回 undefined。两天我试图解决这个问题,但没有。我希望有人可以帮助我..!

**admin-ajax.php 是为 wp 的视图完成的!

<script type="text/javascript"> // ajaxurl in header.php
    var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>

/*
Plugin Name: Release Dates
Description: Small calendar for serials release dates.
Author: J_J
Version: 1.0
*/

function draw_calendar($month, $year) // creating calendar

  $month = date('m');
  $year = date('y');
  $calendar = '<table class="calendar">';
  $headings = array('S', 'M', 'T', 'W', 'T', 'F', 'S');
  $calendar .= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">', $headings).'</td></tr>';
  $running_day = date('w', mktime(0, 0, 0, $month, 1, $year));
  $days_in_month = date('t', mktime(0, 0, 0, $month, 1, $year));
  $days_in_this_week = 1;
  $day_counter = 0;
  $dates_array = array();
  $calendar .= '<tr class="calendar-row">';
  for ($x = 0; $x < $running_day; ++$x) 
      $calendar .= '<td class="calendar-day-np"> </td>';
      ++$days_in_this_week;
  
  for ($list_day = 1; $list_day <= $days_in_month; ++$list_day) 
      $calendar .= '<td class="calendar-day"><div class="day-number"><a style="cursor:pointer;" onClick="relDaySerial('.$list_day.');">'.$list_day.'</a></div></td>';
      if ($running_day == 6) 
          $calendar .= '</tr>';
          if (($day_counter + 1) != $days_in_month) 
              $calendar .= '<tr class="calendar-row">';
          
          $running_day = -1;
          $days_in_this_week = 0;
      
      ++$days_in_this_week;
      ++$running_day;
      ++$day_counter;
  
  if ($days_in_this_week < 8) 
      for ($x = 1; $x <= (8 - $days_in_this_week); ++$x) 
          $calendar .= '<td class="calendar-day-np"> </td>';
      
  
  $calendar .= '</tr>'.'</table>';
  return $calendar; 

function get_serials($day)  // here i catch relDaySerial:id
 if ($_POST['relDaySerial'] === null) 
    $day = date('d');
 else 
    $day = $_POST['relDaySerial'];


global $wpdb;

$result = $wpdb->get_results("SELECT * FROM tvt_calendar WHERE day=$day");
foreach ($result as $value) 
    echo "
  <table id='cal-data'>
    <tr>
      <td class='calendar-day-head'>TV Show</td>
      <td class='calendar-day-head'>S</td>
      <td class='calendar-day-head'>E</td>
    </tr>
    <tr class='cal-content'>
      <td><a href='#'>".$value->title.'</a></td>
      <td>'.$value->season.'</td>
      <td>'.$value->series.'</td>
    </tr>
  </table>
    ';

function my_action_javascript() 
  ?>
<script type="text/javascript" >
function relDaySerial(id) 
jQuery.ajax(
  type:'POST',
  url:ajaxurl,
  data:relDaySerial:id,
success:function(data) 
  if(relDaySerial.type == "success") 
     jQuery('#cal-bottom').html(data)
  
  else 
     alert()
   
);
</script>
<?php
add_action('wp_footer', 'my_action_javascript');
add_action('wp_ajax_my_action_javascript', 'my_action_javascript');
add_action('wp_ajax_nopriv_my_action_javascript', 'my_action_javascript');?>

【问题讨论】:

【参考方案1】:

因为您的alert() 需要一个参数。 试试这个:

alert('An error has occurred.');

【讨论】:

我需要返回 relDaySerial 数据(天数),我不需要错误消息“发生错误”))) 好兄弟。既然有人编辑了你的问题,我现在明白你的意思了。你说它还没有完成,但我要限制和测试你的代码,你的代码似乎只是一个整体的一部分,比如缺少 &lt;?php 并且 ajaxurl 没有定义?因为那是数据将被发送到 id 的地方。另外,add_action() 它建在哪里?更好地对其进行更多工作,或者请在代码中使用 cmets 进行更结构化的解释。没有冒犯,但这是人们避免在一堆代码没有注释时干扰这里的最主要原因。

以上是关于Wordpress ajax->php 请求的主要内容,如果未能解决你的问题,请参考以下文章

尝试从 ajax(Wordpress 插件)将 FormData 中的 Blob 发布到 php 时出现 400(错误请求)

Wordpress jQuery ajax GET 请求到 php 函数,该函数在每个 php 任务完成时逐步发回多个响应

ajax在wordpress中发送400错误请求错误

Wordpress admin-ajax.php 在没有处理功能的情况下正在死亡“0”

如何在wordpress中用php编写ajax?

Wordpress 无法通过 ajax 请求加载正确的语言 mo 文件