繁体   English   中英

jQuery ajax调用mvc Action不会触发成功/错误

[英]jQuery ajax call to mvc Action doesn't fire success/error

尝试为全局会话变量创建开关时,ajax调用永远不会返回“成功”或“错误”。

将调用操作并设置会话密钥,但永远不会触发成功/错误功能。

这很奇怪,因为我在其他调用中使用了相同的结构来替换div,并且可以正常工作。

JavaScript不起作用

function SwitchHelpMode() {
    debugger;
    var helpmode = true;
    $.ajax({
        type: 'GET',
        url: '/Session/GetSessionKey',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: { key: "helpmode" },
        sucess: function (data) {
            alert(data);
            //debugger;
            //var ok = data.success;
            //if (ok) {
            //    var algo = data.value;
            //    alert(algo);
            //    helpmode = !algo;
            //}
        },
        error: function (xhr) {
            //debugger;
            alert(xhr);
            alert('ERROR::SetSessionKey!' + xhr.responseText);
        }
    });
    helpmode = false;
    $.ajax({
        type: 'GET',
        url: '/Session/SetSessionKey',
        data: { key: "helpmode", value: helpmode },
        sucess: function (data) {
            alert(data);
        },
        error: function (xhr) {
            debugger;
            alert('ERROR::SetSessionKey!' + xhr.responseText);
        }
    });
}

调节器

public ActionResult SetSessionKey(string key, string value)
{
    Session[key] = value;

    return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}

public ActionResult GetSessionKey(string key)
{

    if(Session[key] != null)
    {
        var value = Session[key];

        return Json(new { success = true, data = value }, JsonRequestBehavior.AllowGet);
    }
    else
    {
        return Json(new { success = false }, JsonRequestBehavior.AllowGet);
    }
}

Javascript作品

function FilterInfoByFlightsCallback(values) {
    //debugger;
    var data = JSON.stringify(values);
    var url = '/Campaign/FilterInfoByFlights';
    $.ajax({
        type: 'GET',
        url: url,
        data: { filter: data },
        success: function (result) {
            $('#infoList').html(result);
        },
        error: function (result) {
            // handle errors
            location.href = "/MindMonitor/"
        }
    });
}

检查员的回应

http://localhost:50518/Session/GetSessionKey?key=helpmode
{"success":true,"data":"false"}
http://localhost:50518/Session/SetSessionKey?key=helpmode&value=false
{"success":true}

HTTP/1.1 200 OK

Cache-Control: private

Content-Type: application/json; charset=utf-8

Server: Microsoft-IIS/8.0

X-AspNetMvc-Version: 5.2

X-AspNet-Version: 4.0.30319

X-SourceFiles: =?UTF-8?B?
UzpcVlNTb3VyY2VcUHJvamVrdGVcTU1JXGJmdWVudGVzXE1NSVxNaW5kc2hhcmUuTU1JXE1NSVxTZXNzaW9uXEdldFNlc3Npb25LZXk=?=

Persistent-Auth: true

X-Powered-By: ASP.NET

WWW-Authenticate: Negotiate oRswGaADCgEAoxIEEAEAAABDh+CIwTbjqQAAAAA=
Date: Tue, 07 Jul 2015 12:45:03 GMT

Content-Length: 31

HTTP/1.1 200 OK

Cache-Control: private

Content-Type: application/json; charset=utf-8

Server: Microsoft-IIS/8.0

X-AspNetMvc-Version: 5.2

X-AspNet-Version: 4.0.30319

X-SourceFiles: =?UTF-8?B?
UzpcVlNTb3VyY2VcUHJvamVrdGVcTU1JXGJmdWVudGVzXE1NSVxNaW5kc2hhcmUuTU1JXE1NSVxTZXNzaW9uXFNldFNlc3Npb25LZXk=?=

Persistent-Auth: true

X-Powered-By: ASP.NET

WWW-Authenticate: Negotiate oRswGaADCgEAoxIEEAEAAABDh+CIwTbjqQAAAAA=
Date: Tue, 07 Jul 2015 12:45:03 GMT

Content-Length: 16

任何想法?

没有多余的c中- sucess: function (data) {因为如此,即使从服务器的响应将是200 OK ,但它不会触发传统的success ,因为它是不能够找到一个。

应该是- success: function (data) {

如果您没有太多的经验,则可能很难对AJAX进行故障排除。 适用于所有现代浏览器的开发人员工具(或FireBug)是您的朋友。 它们使查看/了解服务器作为响应返回的内容变得更加容易。

由于请求使用的是Ajax,因此浏览器将不会呈现任何返回的错误页面。

使用Chrome(其他工具类似,通常使用CTRL + SHIFT + I或F12打开):

Open the Developer Tools pane with (CTRL + SHIFT + I).
Click the Network tab.
Click your page element to fire the click handler and send the Ajax request.
Find and click the network request in the Network tab (bottom-left).
The pane next to the network request has Tabs for 'Headers', 'Preview' and 'Response'.

标头将向您显示请求的内容(发送到服务器的内容)。

响应将向您显示服务器响应的内容。 对于成功的请求,这可能是JSON,或者如果发生错误,它可能是错误页面的HTML源。

预览选项卡将呈现服务器响应(如果可能)。 如果您从服务器接收到错误响应/页面,这将特别有用,因为您无需浏览原始HTML即可找到错误详细信息。

如果您的AJAX调用失败,并且服务器返回500错误,则您始终可以检查服务器日志或查看“网络”>“预览”选项卡以查看返回的错误详细信息。 您可以像对待任何传统服务器响应一样对错误进行故障排除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM