Я пытаюсь создать действие AJAX в elgg. Я следовал этому Эльг учебник: Ajax: Выполнение действий, но я не получаю ничего до сих пор, кроме отказоустойчивой ошибки:Как добавить действие AJAX - Elgg
Sorry, Ajax only!
Другая ошибка в том, что страница перезагружается, а не сохраняющиеся данные асинхронно.
В чем я ошибаюсь? Спасибо всем заранее.
Ниже мой код:
форма:просмотров/по умолчанию/Опалубка/service_comments/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");
файл действия:действия/service_comments/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/service_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);
});
Hi @enRaiser. У меня есть следующий вопрос [ЗДЕСЬ: Как я могу перейти к передаче данных из HTML-формы в файл JavaScript, который обрабатывает вызовы AJAX] (http://stackoverflow.com/questions/38651742/how-can-i-go- about-pass-data-from-a-html-form-to-a-javascript-file-that-handl), и я надеялся, что вы сможете еще раз помочь. Спасибо. –
'onclick' => "myajax_function (this)", затем внутри myajax_function используйте это. Вы можете хранить данные как параметры данных в главном элементе. или вы можете использовать функцию DOM для доступа к дочернему элементу этого. – enRaiser