我试图在elgg中创建一个AJAX操作。我遵循了Elgg教程: Ajax:执行操作,但到目前为止,除了失败错误之外,我什么也没有得到:
Sorry, Ajax only!另一个错误是页面重新加载,而不是异步地持久化数据。
我做错什么了?先谢谢大家。
下面是我的代码:
表单:视图/默认/窗体/服务_注释/add.php
<?php
$url_confirm = elgg_add_action_tokens_to_url("action/service_comments/add?guid={$guid}");
$params_confirm = array(
'href' => $url_confirm,
'text' => elgg_view_icon('upload'),
'is_action' => true,
'is_trusted' => true,
'class' => 'upload-media-update',
);
$confirm = elgg_view('output/url', $params_confirm);
?>
<div class="update-options">
<?= $confirm ?>
</div>start.php
elgg_register_action("service_comments/add", __DIR__ . "/actions/service_comments/add.php");操作文件:操作/服务_注释/add.php
<?php
elgg_ajax_gatekeeper();
$arg1 = (int)get_input('arg1');
$arg2 = (int)get_input('arg2');
// will be rendered client-side
system_message('We did it!');
echo json_encode([
'sum' => $arg1 + $arg2,
'product' => $arg1 * $arg2,
]);Javascript :视图/js/_comments/add.js
var Ajax = require('elgg/Ajax');
var ajax = new Ajax();
ajax.action('service_comments/add', {
data: {
arg1: 1,
arg2: 2
},
}).done(function (output, statusText, jqXHR) {
if (jqXHR.AjaxData.status == -1) {
return;
}
alert(output.sum);
alert(output.product);
});发布于 2016-07-28 15:14:07
您已经编写了ajax过程,但没有调用它。相反,你直接打电话给它。把它连接起来。
$params_confirm = array(
'href' => '#',
'text' => elgg_view_icon('upload'),
'onclick' => "myajax_function()",
'class' => 'upload-media-update',
);
$confirm = elgg_view('output/url', $params_confirm);然后在函数中移动JS代码。
function myajax_function(){
var Ajax = require('elgg/Ajax');
var ajax = new Ajax();
ajax.action('service_comments/add', {
data: {
arg1: 1,
arg2: 2
},
}).done(function (output, statusText, jqXHR) {
if (jqXHR.AjaxData.status == -1) {
return;
}
alert(output.sum);
alert(output.product);
});
}https://stackoverflow.com/questions/38619422
复制相似问题