我使用Jquery和PHP一起进行一些Ajax调用。这与我正在做的事情类似:
$.ajax({
type: "POST",
dataType: 'json',
url: "http://example/ajax",
data: { test: test },
cache: false,
async: true,
success: function( json ){
$.each( json.rows, function( i, object ){
//Example: object.date
<?php date('g:ia', $objectDate ) ?>;
});
}
});
我需要的是传递一些JSON对象到PHP,例如对象。日期到$objectDate,然后对它们做一些操作。这可能吗?
PHP在服务器端执行,JS在客户端执行。一旦服务器处理了AJAX调用,它就不再知道客户机上发生了什么。
您已经通过AJAX调用将数据从JS传递到PHP。如果您需要在PHP中处理该数据,请在返回调用之前进行处理,那么返回JSON对象只是为了在PHP中重新处理它是没有意义的。总之,你应该做的是:
- 通过AJAX调用将一些数据从客户端传递到服务器 PHP处理这些数据并返回一个JSON对象
- JS处理JSON对象,例如,修改页面的HTML。
- 如果您需要用PHP进一步处理新生成的数据,请执行其他AJAX调用。
另外,如果你需要JS使用第2点生成的任何变量,只需在JSON对象中返回它,这就是它的作用。
这是一个从JS到PHP,从PHP到JS的基本概述:
要将对象从Javascript传输到PHP(并保存它),需要使用JSON对数据进行编码。stringify:
var data = { message: "Hello" };
$.ajax({
data: { data: JSON.stringify(data) },
// ...
});
然后,在PHP中,您可以使用json_decode
将发布的JSON字符串转换为PHP数组,这非常容易使用:
$data = json_decode($_POST['data'], true);
echo $data['message'];
// prints "Hello"
将JSON作为响应发送回浏览器(对于您的success
回调),使用json_encode,如下所示:
header('Content-type: application/json');
echo json_encode(array(
'message' => 'Hello, back'
));