Asmx-страница, на которой я вызываю веб-службу, и она возвращает строку JSON, но моя публикация jQuery не работает, и я не уверен, почему?

                    $.post("/DesktopModules/EastlinkMilestones/MilestonesService.asmx /InsertYear_Decade",
                {   Year: $('#txtYear_Decade').val(),
                    IsDecade: $('#chkIsDecade').prop('checked')
                },
                function (data)
                {
                    Current_Edit_State == EDIT_STATE.UPDATE;
                    successMessage.text('Year/Decade created successfully.');
                    informationMessage.css('display', 'none');
                    successMessage.css('display', 'block');                        
                },
                "json"
                )
                 .done(function(data) {
                    alert( "second success" );
                    alert( JSON.stringify(data));
                    })
                 .fail(function(jqXHR, textStatus, errorThrown) {                     
                     alert( "error" );
                     alert( JSON.stringify(jqXHR));
                     alert(textStatus);
                     alert(errorThrown);
                    })
                 .always(function() {
                    alert( "finished" );
                 });

.ASMX Метод

[WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string InsertYear_Decade()
    { var Request = HttpContext.Current.Request;
        var Response = HttpContext.Current.Response;

                    var js = new JavaScriptSerializer();

                string mileStoneData = js.Serialize(data);

                return mileStoneData; // {"ID": 20, "Year": "2013", "IsDecade": false }
            }
    }

Веб-метод всегда терпит неудачу, и это textStatus = parsererror и errorThrown = Invalid Character?

0
Hunter 7 Мар 2014 в 16:58

2 ответа

Лучший ответ

Вам НЕ нужно возвращать значение, просто укажите его в ответе. Попробуйте что-то вроде этого:

JavaScriptSerializer serializer = new JavaScriptSerializer();
Response.ContentType = "application/json";
Response.Write(serializer.Serialize(data));
1
frikinside 7 Мар 2014 в 13:01

Вместо того, чтобы возвращать тип строку , вы должны вернуть объект напрямую. Нет необходимости использовать JavascriptSerializer, и в вашем сообщении jquery установите для вашего contentType значение application / json

-1
sandeep 7 Мар 2014 в 13:13