我来自Prototype.js,在那里我处理所有ajax调用,如下所示:
function ajax_request (page, func) {
new Ajax.Request (page, { method : 'post', parameters : { JSON : func } } );
}
function test_func (data) {
alert(data);
}
//example
ajax_request('/ajax.php', 'test_func');和PHP:
$data_array = array()
$data_array['test'] = 'test data';
header("{$_SERVER['SERVER_PROTOCOL']} 200 OK", True, 200);
header('Content-type: application/javascript');
echo $_POST['JSON'] . '(' . json_encode($data_array) . '); //';我正尝试在jQuery中实现类似的功能,但它似乎不是以同样的方式工作。我在jQuery中使用了以下代码,它发出了请求,但是test_func没有被调用。
function ajax_request (page, func) {
$.ajax({
url: page,
cache: false,
type: 'POST',
data: 'JSON=' + func
});
}我很可能从一开始就一直在用最好的方法来做这件事,所以如果有更好的方法,答案就不需要重复Prototype.js所使用的方法。
发布于 2011-07-27 02:56:25
根据我对您所问问题的最佳解释,我会说Prototype.js中的parameters选项与jQuery中的data参数是相同的。尽管jQuery允许您使用URL格式的查询字符串作为data,但我建议您传递一个对象以使其正确序列化:
function ajax_request (page, func) {
$.ajax({
url: page,
cache: false,
type: 'POST',
data: {
JSON: func
}
});
}发布于 2011-07-27 02:56:04
您可以将json对象作为数据参数传递给jquery ajax。为了调用test_func,您必须向ajax方法提供成功处理程序。
function ajax_request (page, func) {
$.ajax({
url: page,
cache: false,
type: 'POST',
data: { JSON : func },
success: test_func
});
}https://stackoverflow.com/questions/6835011
复制相似问题