JavaScript 缺少参数

标签 javascript json session moodle

我正在为 Moodle 编写一个 block 类型插件,并且这个 JS 代码给我带来了问题。由于我对 JS 和 JSON 不太熟悉,我无法推断出问题是什么。 我的代码使用此函数将自定义操作添加到操作链接,该链接向 php 文件发出 ajax 调用...

这是代码:

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]

最佳答案

正如@Collett89所说,JSON定义是错误的。他的技巧可能有用,但如果您需要严格的 JSON 数据,请将 key 编码为字符串(带引号):

var sess = {'sesskey': M.cfg.sesskey};

var sess = {"sesskey": M.cfg.sesskey};

See definition in Wikipedia

关于JavaScript 缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720227/

相关文章:

javascript - 清除 Javascript 中的 drawImage() 函数

javascript - 可以在 flexboxes 中使用相对定位吗?

javascript - JQuery AJAX 请求不工作。

javascript - 使用 Json 向 Google map 添加标记 |应用程序接口(interface)

json - 如何使用 Express 从 Node.js 中的 url 获取 JSON 数据

php 表单 - 2 个按钮(一个用于销毁 session 并重新加载页面,一个用于继续下一页)

javascript - AngularJS - 注入(inject)提供者

jquery.ajax() 使用来自 mysql 的 json 数据

php - Zend Framework session 命名空间调试 print_r 或等价物

asp.net - 由于连续调用 TempGetStateItemExclusive,SQL Server 请求超时