【问题标题】:Retrieve data from ajax query从ajax查询中检索数据
【发布时间】:2013-04-02 20:59:28
【问题描述】:

所以我有一个网站,我想点击一个按钮,检查用户是否具有某些权限,如果有,则弹出一个窗口到新网页。在 java 脚本上我有这样的东西:

function sendAjax(methodName, dataArray, success, error, category) {
    var error2 = error || function () { };
    $.ajax({
        type: 'POST',
        url: '/PermissionChecker' + methodName,
        data: JSON.stringify(dataArray),
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (r, s, x) { if (!success || success(r, s, x) != false) if (typeof (window.ChangeLogAdd) == 'function') { ChangeLogAdd(category); } },
        error: error2
    });
}

function CheckPermissions() {
    sendAjax("CheckPermission", null, function (data) { var permission = eval('(' + data + ')'); if (permission == true) { alert('yay'); } else { alert('nay'); } }, null, 'Check Permission');
}

C# 端是一个简单的函数,它执行 if 检查并返回一个布尔值。函数调用正常,但是当它返回布尔值时,我得到一个javascript错误“预期']'”。我认为这与我的成功功能有关:

    function (data) { 
        var permission = eval('(' + data + ')'); 
        if (permission == true) { 
            alert('yay'); 
        } 
        else { 
            alert('nay'); 
        } 
    }

看到我在尝试我在那里做的事情之前没有收到这个错误,所以我想知道如何从 ajax 调用中获取数据以通过permission == true if/else 检查

【问题讨论】:

  • 这可能与您期望 JSON 并接收布尔值有关。
  • 把你的函数分成多行。当一切都如此紧凑时,很难为您提供帮助。以这种方式格式化您的代码,您一无所获,反而使代码难以阅读。如果函数只包含一行,我通常只有一行函数。
  • 很抱歉,我已经用我的成功函数的不太紧凑的版本编辑了我的问题

标签: javascript c# ajax


【解决方案1】:

不要为此目的使用 eval。这是不安全的,也是许多错误的来源。只需让服务器响应 JSON 并使用 $.getJSON。

【讨论】:

  • 您能否提供一个“使用 JSON 响应并使用 $.getJSON”的示例?说我知道我在用 ajax 做什么是轻描淡写
  • 如果您的服务器以 '{"permission":true}' 响应并且您使用 $.getJSON() 而不是 $.ajax 那么您的数据将是对象 {"permission": true} 并且您可以说:if data.permission跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
相关资源
最近更新 更多