JQuery AJAX имеет проблемы с получением возвращаемого значения из обработчика Ashx - PullRequest
6 голосов
/ 06 апреля 2011

Привет,

Независимо от того, что я делаю, я не могу получить свой jjery ajax-код, чтобы получить ответ, отличный от нуля, со страницы обработчика ashx.

Вот моя страница hmt:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>:: ashx tester ::</title>
    <link rel="stylesheet" href="js/jqueryui/1.8.6/themes/sunny/jquery-ui.css"
        type="text/css" media="all" />
    <script type="text/javascript" src="js/jquery/1.4.3/jquery.min.js"></script>
    <script type="text/javascript" src="js/jqueryui/1.8.6/jquery-ui.min.js"></script>
    <script type="text/javascript" src="js/json2/0.0.0/json2.js"></script>
    <script type="text/javascript">
        $(function () {
            $('#btnSubmit').click(
                function () {
                    DoIt();
                }
            );
        });

        function DoIt() {
            $('#btnSubmit').hide();
            $.ajax({
                type: "POST",                
                url: "http://localhost:49424/Handler1.ashx",
                data: {
                    firstName: 'Bob',
                    lastName: 'Mahoney'
                },
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (response) {
                    alert('success: ' + response);
                    $('#btnSubmit').show();
                },
                error: function (response) {
                    alert('error: ' + response);
                    $('#btnSubmit').show();
                }
            });
        }
    </script>
</head>
<body>
    <input id="btnSubmit" type="button" value="Submit" />
</body>
</html>

А вот и моя страница Ashx:

Imports System.Web
Imports System.Web.Services
Imports System.Collections.Generic
Imports System.Linq
Imports System.Data
Imports System.Configuration.ConfigurationManager
Imports System.Web.Services.Protocols
Imports System.Web.Script.Serialization

Public Class Handler1
    Implements System.Web.IHttpHandler

    Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
        Dim j As New System.Web.Script.Serialization.JavaScriptSerializer
        Dim s As String

        s = j.Serialize(Now)
        context.Response.ContentType = "application/json"
        context.Response.Write(s)

    End Sub

    ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property

End Class

Любые подсказки?

Спасибо!

Дейв

Ответы [ 3 ]

2 голосов
/ 06 апреля 2011

Try url: "/Handler1.ashx",

вместо

 url: "http://localhost:49424/Handler1.ashx",
1 голос
/ 22 сентября 2013

Я использую только текстовый тип данных с обработчиками

      var webServiceURL = 'http://localhost:12400/Handler1.ashx';
        var data = "Key:Value";

        alert(data);

        $("input[id='btnSubmitLead']").click(function () {
            $.ajax({
                type: "POST",
                url: webServiceURL,
                data: data,
                dataType: "text",
                success: function (results) {
                    alert("Your information has been sent to the dealer, thank you");
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(textStatus +"-"+ errorThrown);
                    alert("Your information has not been sent");
                }
            });
        });

Итак, я получаю информацию для обработчика во всех браузерах, но не получаю правильное подтверждение обратно, поскольку это всегда ошибка.Я использую HTML-страницу для отправки вызова AJAX.Я также удалил:

         context.Response.ContentType = "application/json"

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

0 голосов
/ 16 сентября 2014

Этот упрощенный код работает для меня ..

    $.ajax({
        type: "POST",
        url: "AddProviderToCall.ashx",
        data: {ProviderID: strProviderID, PhyUserID: PhyUserID },
        success: function (response) {
            alert('success: ' + response);
        },
    });

В моем обработчике C # ..

{
    context.Response.ContentType = "text/plain";
    context.Response.Write(result);
}
...