Может ли звездочка в тексте заставить запрос getJSON не работать? - PullRequest
0 голосов
/ 23 января 2009

Это действительно странно, но этот код работает нормально, если только введенное пользователем значение не содержит звездочку (*) или другие символы, такие как $ или # # TicketNumber.Val () является предполагаемой проблемой. Некоторые из наших идентификаторов имеют * в них. Любая помощь будет оценена.

function buttonClicks() {
    var action = '/ServiceCall/IsAServiceCall/' + $('#ticketNumber').val() + '?x=' + new Date().getTime();
    $('#ticketNumberFilter').hide();
    $('#loading').show();
    $.getJSON(action,
        { ticketNumber: $("#ticketNumber").val() },
        function(callData) {
            if (callData.status == true) {
                window.location = "/ServiceCall/Show/" + $("#ticketNumber").val();
            }
            else {
                $('#loading').hide()
                $('#ticketNumberFilter').show();
                $("#ticketListMessage").slideDown("slow");
                $("#ticketNumber").val("");
            }
        });
}

Вот контроллер: Когда есть *, контроллер никогда не получает удар:

    public JsonResult IsAServiceCall(string ticketNumber)
    {
        IServiceCallService scService = new ServiceCallService();
        return (Json(new { status = scService.IsAServiceCall(ticketNumber) } ));
    }

Ответы [ 2 ]

1 голос
/ 24 января 2009

Я предполагаю, что (как предполагает Роборг) перезаписывающий URL-адрес, используемый средой MVC, считает * специальным символом ... Я не могу быть уверен в том, в чем проблема, но похоже, что вы можно легко избежать этой проблемы, просто удалив звездочки перед запросом и добавив их снова на стороне сервера:

var ticketNumber = $('#ticketNumber').val().split('*').join('&asterisk;');

и на стороне сервера вы можете полностью изменить процесс.

0 голосов
/ 23 января 2009

A * не должно вызывать проблем, но # будет - вам нужно URL-кодировать значение, используя encodeURIComponent():

var action = '/ServiceCall/IsAServiceCall/' + encodeURIComponent($('#ticketNumber').val()) + '?x=' + new Date().getTime();

То же самое касается вашего window.location

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