在Asp上使用Json时出错

时间:2013-06-27 11:15:10

标签: c# javascript asp.net json post

我在aspnet上使用JavaScript和C#。我想从Asp页面传递3个值到后面的代码,为此我使用Json方法。 这是我的工作方式:

   //initialize x, y and nome
   var requestParameter = { 'xx': x, 'yy': y, 'name': nome };

            $.ajax({
                type: 'POST',
                url: 'Canvas.aspx/GetData',
                data: requestParameter,
                //contentType: "plain/text",
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (data) {
                    alert(data.x);

                },
                error: function () { alert("error"); }
            });

然后在C#上做:

[WebMethod]
public static string GetData(Object[] output)
{
    return output.ToString();
}

由于某些原因,我继续收到警告说“错误”(我在ajax post方法中定义的那个)。我想知道为什么,我怎么能避免这种情况。 提前致谢

2 个答案:

答案 0 :(得分:1)

 { 'xx': x, 'yy': y, 'name': nome }

json无效。

有效是

 var requestParameter = { "xx": 1, "yy": 11, "name": "test" }

要运行,只需更改webmethod上的参数,然后从object[]更改为Dictionary<string,object>

继续上一次评论后,我更新我的帖子还有一个解决方案。

Aspx页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

                               

      function testmethod() 
          {
            var requestParameter = { "xx": 1, "yy": 11, "name": "adadsaasd111" };
            PageMethods.test(requestParameter);
           }

        function test() 
        {
            testmethod();
        }
    </script>

    <input id="Button1" type="button" onclick="return test();" value="button" />
</form>

 

cs code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [System.Web.Services.WebMethod]
    public static void test(Dictionary<string,object> cal)
    {
       // todo 
    }
}

}

答案 1 :(得分:0)

var requestParameter = { 'xx': x, 'yy': y, 'name': nome };更改为

var requestParameter = { "xx": "'+x+'", "yy": "'+y+'", "name": "'+nome+'" };

还要添加

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]

之后

也在声明类添加

之前
[System.Web.Script.Services.ScriptService]

此标记是允许从脚本

调用Web方法所必需的

您的网络服务应该是这样的

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetData(String xx, String yy, String name)
{
    return xx+yy+name;
}

和jquery

 $.ajax({
url: '/Canvas.aspx/GetData',// the path should be correct
            data: '{ "xx": "'+x+'", "yy": "'+y+'", "name": "'+nome+'" }',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            type: 'POST',
            success: function (msg) {
                alert(msg.d);

            },
            error: function (msg) {

                //alert(msg.d);
                alert('error');
            }
        });