Ошибка JQuery AJAX в Firefox на Mac с «управляемыми» пользователями - PullRequest
2 голосов
/ 05 июля 2011

У меня проблема с вызовом JQuery AJAX в Firefox (3.6.13 - 4.x) на Mac (OS-10.5). Проблема возникает только тогда, когда пользователь «Управляется для родительского контроля». Это не происходит для пользователей «Стандарт» или «Администратор», и не происходит в Safari или Chrome для любых пользователей. Эта проблема не возникает нигде в среде Windows.

У меня есть простая страница ASP.NET (ASPX), которая вызывает простую веб-службу ASP.NET (ASMX). Возвращаемое сообщение об ошибке:

Тип исключения: System.ArgumentException Сообщение: передан недопустимый объект, ожидается ':' или '}'. (23): {'данные': 'что-то' Трассировка стека: в System.Web.Script. Serialization.JavaScriptObjectDeserializer.DeserializeDictionary (глубина Int32) в System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (глубина Int32) в System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize (последовательный ввод, системный ввод Intiller). Web.Script.Serialization.JavaScriptSerializer.Deserialize [T] (строковый ввод) в System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (контекст HttpContext, метод WebServiceMethodData methodData)

Эта ошибка возникает во время десериализации JSON и фактически не переходит в метод обслуживания. Обратите внимание, что буквы «Pr» вставляются в передаваемый объект JSON, а завершающая фигурная скобка опускается (что приводит к ошибке): «{'data':'thing'Pr". Буквы "Pr" не появляются в Посте, когда я изучаю их в Firebug.

Для меня это похоже на ошибку в Firefox. Есть мысли?

Вот код:

ВЕБ-СЕРВИС:

using System;
using System.Web;
using System.Web.Services;

namespace TestWebApp
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class MacAjaxTestService : System.Web.Services.WebService
    {
        [WebMethod]
        public string TestServiceCall(string data)
        {
            return "Data Received = '" + data + "'.";
        }
    }
}

ASPX PAGE:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MacAjaxTest.aspx.cs" Inherits="TestWebApp.MacAjaxTest" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>MAC AJAX TEST</title>
    <script language="javascript" type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.9/jquery-ui.min.js"></script>
    <script type="text/javascript" language="javascript">

        $(function ()
        {
            $("#TestButton").button().click(TestButton_Click);
            $("#TestText").focus();
            $("#ResultsDiv").text("").css({ "border": "solid 1px #999999", "width": "600px", "min-height": "100px" });
        });

        function TestButton_Click()
        {
            $("#ResultsDiv").text("");
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: "MacAjaxTestService.asmx/TestServiceCall",
                data: "{ 'data' : '" + $("#TestText").val() + "' }",
                dataType: "json",
                success: function (data)
                {
                    $("#ResultsDiv").text(data.d);
                },
                error: function (jqXHR, textStatus, errorThrown)
                {
                    //be sure customErrors mode="Off" in web.config.
                    var error = $.parseJSON(jqXHR.responseText);
                    var msg = "Exception Type: " + error.ExceptionType + "<br />"
                        + "Message: " + error.Message + "<br />";

                    if (error.StackTrace != null && error.StackTrace.length > 0)
                        msg += "Stack Trace: " + error.StackTrace;

                    $("#ResultsDiv").html(msg);
                }
            });
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2>MAC AJAX TEST</h2>
        <br />
        <input type="text" id="TestText" />
        <input type="button" id="TestButton" value="Test" />
        <br /><br /><br />
        Results:
        <br />
        <div id="ResultsDiv"></div>
    </div>
    </form>
</body>
</html>

1 Ответ

1 голос
/ 02 сентября 2011

Похоже, это давно существующая ошибка в Firefox / MacOS

https://bugzilla.mozilla.org/show_bug.cgi?id=489575

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...