Я кодирую плагин типа блока для Moodle и имею этот JS-код, который дает мне проблемы. Поскольку я не очень хорошо знаком с JS и JSON, я не могу определить, в чем проблема. Мой код использует эту функцию для добавления пользовательских действий на ссылку действий, который выдает Ajax вызов PHP файл ...Ошибка JavaScript parametar
Это код:
function block_helpdesk_sendemail(e) {
e.preventDefault();
Y.log('Enetered method');
var sess = {'sesskey=':M.cfg.sesskey};
Y.log(sess);
var ioconfig = {
method: 'GET',
data: {'sesskey=':M.cfg.sesskey},
on: {
success: function (o, response) {
//OK
var data;
try {
data = Y.JSON.parse(response.responseText);
Y.log("RAW JSON DATA: " + data);
} catch (e) {
alert("JSON Parse failed!");
Y.log("JSON Parse failed!");
return;
}
if (data.result) {
alert('Result is OK!');
Y.log('Success');
}
},
failure: function (o, response) {
alert('Not OK!');
Y.log('Failure');
}
}
};
Y.io(M.cfg.wwwroot + '/blocks/helpdesk/sendmail.php', ioconfig);
}
код останавливается в отладчике на обратной линии:
Y.namespace('JSON').parse = function (obj, reviver, space) {
return _JSON.parse((typeof obj === 'string' ? obj : obj + ''), reviver, space);
};
Я поместил M.cfg.sesskey и переменные данных на часы. Я могу видеть данные sesskey показаны, но переменные данные показывает, как это:
data: Object
debuginfo: "Error code: missingparam"
error: "A required parameter (sesskey) was missing"
reproductionlink: "http://localhost:8888/moodle/"
stacktrace: "* line 463 of /lib/setuplib.php: moodle_exception thrown
* line 545 of /lib/moodlelib.php: call to print_error()
* line 70 of /lib/sessionlib.php: call to required_param()
* line 7 of /blocks/helpdesk/sendmail.php: call to confirm_sesskey()"
И это то, что показывают мои журналы:
Enetered method
Object {sesskey=: "J5iSJS7G99"}
RAW JSON DATA: [object Object]
Спасибо вам обоим @codefan. Я пробовал оба решения (в кавычках и без кавычек), и теперь я получаю ошибку анализа JSON с ошибкой. Я прочитаю ссылку, которую предоставил Collet89 и, надеюсь, решает проблему – Moirae
@Moirae рад, что у вас есть немного дальше. Обычно вам нужно 'JSON.stringify()' объекты, отправленные через ajax. которые могут быть частью проблемы. – Collett89
Не могли бы вы добавить это к своему предыдущему ответу, чтобы я мог отметить его как ответ? – Moirae