使用Ajax将数组发送到wordpress中的PHP脚本

时间:2017-03-17 16:23:02

标签: javascript php jquery ajax wordpress

我试图将数据从JS文件发送到服务器中的PHP文件,但是当我尝试在php中使用该数组时,我什么也没得到。

这是我在JS中的功能:

var sortOrder = [];
var request = function() {

    var jsonString = JSON.stringify(sortOrder);

    $.ajax({
        type: "POST",
        url: '<?php echo get_template_directory_uri(); ?>/MYPAGE.php',
        data: { sort_order : jsonString },
        cache: false,
        success: function() {
            alert('data sent');
        }
    })  
};

这是我的php文件MYPAGE.php:

<?php

$arrayJobs = json_decode(stripslashes($_POST['sort_order']));

echo($arrayJobs);?>

这是我第一次使用ajax,老实说,我也对网址感到困惑,因为我正在使用wordpress中的模板。 即使我不使用json,它也不起作用!

这些是我正在看的例子:

Send array with Ajax to PHP script

Passing JavaScript array to PHP through jQuery $.ajax

2 个答案:

答案 0 :(得分:1)

首先,javascript代码在哪里?它需要在.php文件中才能执行php代码(wordpress函数)。

其次,您如何知道后端没有收到数据。您正在发送AJAX请求,但未在此处收到结果。如果您阅读$.ajax上的documentation,您会看到来自服务器的响应已传递到success回调。

$.ajax({
    type: "POST",
    url: '<?php echo get_template_directory_uri(); ?>/MYPAGE.php',
    data: { sort_order : jsonString },
    cache: false,
    success: function(responseData) {
        // consider using console.log for these kind of things.
        alert("Data recived: " + responseData);
    }
})

您将在此警报中的PHP代码中看到echo的任何内容。只有这样你才可以说你什么都没得到。

此外,json_decode将返回一个JSON对象(如果你告诉它,则返回一个数组)。你不能像在这里一样echo。您应该使用print_r来实现此目的。

$request = json_decode($_POST['sort_order']);
print_r($request);

我相信javascript代码中的sort_order仅为此示例而为空,您实际上是在实际代码中发送内容,对吧?

答案 1 :(得分:-1)

问题出在你的网址上,javascript无法插入php标签,我建议你通过&#34; get_template_directory_uri()&#34;作为主页面中的变量:

<script>
  var get_template_directory_uri = "<?php get_template_directory_uri() ?>";
</script>

之后,在url属性中使用此变量。

祝你好运。

我希望它有所帮助