【问题标题】:AJAX issues (Cannot get ajax to successfully work) PHP, AJAX, JAVASCRIPT, WORDPRESS (NO PLUGIN)AJAX 问题(无法让 ajax 成功运行)PHP、AJAX、JAVASCRIPT、WORDPRESS(无插件)
【发布时间】:2014-09-07 02:42:57
【问题描述】:

我今天早些时候问了一个问题,运气不佳: AJAX within a foreach loop

我走上了正确的道路,但提供的答案让我比以往任何时候都更加困惑。 每当我使用 ajax 调用单击我的锚标记时,什么都没有发生。当我进入控制台视图并检查网络选项卡时,它说呼叫成功。当我进一步了解通话详细信息时,它会显示我发送的所有数据以及它所访问的页面。 page_id=252 上的代码不会触发。

我正在使用 wordpress 来完成这项任务。 我正在使用自定义模板来保存我的 PHP 代码。不是插件。

我有两页:

Index.php
ajaxcall.php

Index.php(?page_id=## 是我的 wp 页面的默认永久链接。此位置有效。)

    <script type="text/javascript">
    function onClickingThis(rem_opt,vidid){
      $.ajax({
          url: '?page_id=252', 
          type: 'POST',
          data: {action: 'update_this_func', remove_option: rem_opt, uservideo_id: vidid },
          dataType: 'json',
          success: function(response){
            console.log('works');
          }
      });
    }
</script>

// all my php code, for everything on the page.
<a href="#"  onclick="onClickingThis(0,1)></a>

ajaxcall.php

function update_this_func(){
$remove_option = $_POST['remove_option'];
$uservideo_id  = $_POST['uservideo_id'];

global $wpdb;

$wpdb->query("UPDATE " . $wpdb->prefix."uservideo
              SET is_removed =" . $remove_option . "
              WHERE uservideo_id =" . $uservideo_id );

return json_encode(['status' => 'Updated!']); // return status as json
}

此代码由用户 Ervald 提供,但他不想详细说明他的代码。 我的成功消息不适用于 ajax,但我在控制台中没有收到任何错误。 我如何调试我的ajax?我的ajax设置不正确吗?如果这不是使用 ajax 的正确方法,请告诉我。任何帮助都非常感谢

【问题讨论】:

  • 您可以在开发者工具 (F12) 的 Chrome 网络选项卡上调试 AJAX 以查找 XHR 项目。单击该项目,它将在您的右侧显示另一个框架,然后您可以查看请求信息以及“预览”选项卡。

标签: php jquery ajax wordpress


【解决方案1】:

您的 PHP 脚本中有 2 个问题:
1。该函数未被调用
2。函数的返回值没有回显。

(为了响应 AJAX 调用,被调用的 url 总是需要输出一些东西 - JSON 在大多数情况下.AJAX 无法访问PHP,因此无法读取PHP 返回值。)

这是固定版本:

function update_this_func($remove_option, $uservideo_id){

    global $wpdb;

    $wpdb->query("UPDATE " . $wpdb->prefix."uservideo
                  SET is_removed =" . $remove_option . "
                  WHERE uservideo_id =" . $uservideo_id );

    return json_encode(['status' => 'Updated!']); // return status as json
}
echo update_this_func($_POST['remove_option'], $_POST['uservideo_id']);

【讨论】:

  • 非常感谢。这已经是漫长的一天,甚至不知道参数没有提供给函数。
  • @user3753569 好吧,它们已经在函数内部定义为 $_POST 变量的值。这也有效,因为$_POST vars 是全局的,因此也可以在函数内部访问。所以这不是问题。我自己更喜欢这种方式,这就是我改变它的原因。
  • @user3753569,不客气 :) 如果你也可以投票支持我的问题,你会再帮我一个忙 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-26
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多