我试图将数据从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,它也不起作用!
这些是我正在看的例子:
答案 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属性中使用此变量。
祝你好运。我希望它有所帮助