jQuery Ajax отправляет в WCF неверный запрос - PullRequest
0 голосов
/ 29 декабря 2011

Я пытаюсь создать поле автозаполнения ... и могу получить соответствующий JSON с помощью Fiddler, но при реализации в коде я получаю ошибку соединения. Код:

<htm>
<Head>
</head>
<body>
<input type="text" id="txt_search" name="search">
<span id="suggest"></span>      
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

    $("#txt_search").keyup(function() 
    {

        var search; 
        search = $("#txt_search").val(); 

        if (search.length > 2) 
            { 

                // Trigger AJAX request 

                $.ajax( 
                { 
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "*****",
                    data: { "FirstPartOfName":"Med " },
                    dataType: "json",
                    success: function(message)  { 
                        if (message.length > 0) 
                            { 
                            alert('It got data back....');
                            message = "Do you mean: " + message; 
                            $("#suggest").append(message);
                            }
                        else
                            {
                            alert('Nothing came back....');
                            }
                        }
                }       );
            } 
            else { 
                // Empty suggestion list 
                $("#suggest").empty();
                } 
    });

});
</script>
</body>
</html>

Я не могу предоставить URL, но я могу подключиться, используя Fiddler, чтобы проверить его. Я думаю, что это может быть проблема с WCF, но как тогда я могу правильно проверить с Fiddler?

1 Ответ

0 голосов
/ 29 декабря 2011

Я не знаю, является ли это вашей основной проблемой, но, установив contentType на application/json, вы сообщаете WCF, что отправляете его параметры в сериализованном формате JSON, но когда вы передаете родной объект в jQuery, вот так, вместо этого он будет кодировать эти параметры в URL. Другими словами, вы отправляете ?FirstPartOfName=Med вместо {"FirstPartOfName":"Med"}. Подробнее об этом здесь: http://encosia.com/asmx-scriptservice-mistake-invalid-json-primitive/

В этом простом случае вы можете исправить это, явно отправив вместо этого строку JSON:

data: '{"FirstPartOfName":"Med"}'

Похоже, но совершенно по-другому.

Сборка строки JSON вручную достаточно проста в простейшем случае, но становится громоздкой. Вы также можете использовать JSON.stringify для автоматического построения строки из объектов .

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