jQuery Ajax发布到WCF收到错误请求

时间:2011-12-28 22:04:57

标签: jquery ajax wcf rest post

我正在尝试创建一个自动完成的框...我可以使用Fiddler检索适当的JSON,但是当在代码中实现时,我收到连接错误。 代码:

<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>

我无法提供网址,但我可以使用Fiddler进行测试。我认为这可能是WCF的一个问题,但我怎么能用Fiddler正确测试呢?

1 个答案:

答案 0 :(得分:0)

我不知道这是否是您的主要问题,但是通过将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字符串是可行的,但却变得很麻烦。您也可以use JSON.stringify to automatically build the string from objects代替。