用ajax错误的请求网址?

时间:2018-04-26 20:40:54

标签: php ajax wordpress

所以,我正在尝试向我的php脚本发送帖子请求。 在网络上,我在一个页面中:https://yyy.yyy/test-page 我的ajax网址设置如下:

url: "https://yyy.yyy/test.php"

但随后它返回404错误,其中包含以下网址:

https://yyy.yyy/test-page/test.php

它肯定不会在该路径中的php文件中找到,因为它位于root。将php移动到另一个文件夹不是一个选项。 该网站位于WordPress服务器中。

这是js代码:

$.ajax({
  url: "https://yyy.yyy/test.php",
  method: "POST",
  type: "Json",
  data: data,
  success: function (res) {...}
});

1 个答案:

答案 0 :(得分:1)

如果你想要使用Ajax并运行WordPress,你应该考虑编写一个插件并利用可用的钩子和函数来使这更容易,因为WordPress会做很多繁重的工作。

我看到你提到它无法移动,但如果它至少可以尝试将PHP代码复制到插件中(或者主题虽然不太理想)并且可能无法正常工作)然后它会让事情变得更容易。

看看using Ajax in plugins

JavaScript(jQuery)位

$.ajax({
    data: {
        action: 'my_ajax_request'
    },
    type: 'post',
    url: SOWP_AJAX.admin_ajax,
    success: function(response) {
        console.warn( response );
    }
});

PHP位(第1部分)

这可确保您将Ajax函数发布到的URL映射到实际的URL。在这种情况下,admin-ajax.php处的WordPress Ajax处理程序。

wp_localize_script(
    'sowp_js', // this is the script name that should be used to enqueue the JavaScript code above
    'SOWP_AJAX',
    array(
        'admin_ajax' => admin_url('admin-ajax.php')
    )
);

PHP位(第2部分)

将其放入已激活的插件或主题文件中。钩子my_ajax_request必须与Ajax请求中的请求操作和函数名称匹配,以便正确调用它。

add_action( 'wp_ajax_my_ajax_request', 'my_ajax_request' ); // the hook that is triggered when the request is made

function my_ajax_request() {

    echo 'my ajax request works'; // print something out

    wp_die(); // stop script execution

}

一旦您完成了上述所有操作,当Ajax请求正常运行并运行时,您应该会在浏览器控制台中看到my ajax request works。如果它返回0,则表示请求在某处失败。如果它确实失败了,通常意味着已经注册并调用了动作挂钩,因此某些内容可能拼写错误或丢失。