从asp.net项目

时间:2015-07-17 14:38:32

标签: asp.net ajax json

我无法从我的visual studio项目中的html页面获得一个简单的ajax示例。它可以从webform(aspx)中正常工作:

... webform1.aspx和form1.html ...

function ShowCurrentTime() {
            alert("before json");
            $.ajax({
                type: "POST",
                url: "json.aspx/GetCurrentTime",
                data: "{name: bob }",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: OnSuccess,
                failure: function (response) {
                    alert(response.d);
                }

            });
            alert("after json");
        }

        function OnSuccess(response) {
            alert(response.d);
        }

... webform1.aspx和form1.html ...

<input id="btnGetTime" type="button" value="Show Current Time"
                   onclick="ShowCurrentTime()" />

... json.aspx ...

[WebMethod]
        public static string GetCurrentTime(string name)
        {
            return "Hello " + name + Environment.NewLine + "The Current Time is: "
                + DateTime.Now.ToString();
        }

如果我将代码放在webform1.aspx中,它可以正常工作。如果我把它放在form1.html上,json.aspx就不会有任何回复。我使用vs2013从我的机器以调试模式运行项目。任何帮助将不胜感激。

更新#1

我检查了fiddler,服务器返回以下结果(500):

{“Message”:“无效的JSON原语:bob。”,“StackTrace”:“在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ r \ n at ...

1 个答案:

答案 0 :(得分:1)

你的json格格不入。字符串需要引号。把bob放在引号中你应该是好的。我不确定为什么它在ASP.NET页面上工作,除非它有引号。

function ShowCurrentTime() {
        alert("before json");
        $.ajax({
            type: "POST",
            url: "json.aspx/GetCurrentTime",
            data: "{name: \"bob\" }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }

        });
        alert("after json");
    }

    function OnSuccess(response) {
        alert(response.d);
    }