0

我正在编写一些代码,但似乎无法理解为什么这总是失败。我曾尝试调试它,但是正在引用的 asp 页面不会遇到断点。(提示可能它没有获取页面??)。对于数据:我在发帖之前就有了它,试图查看它是否会执行 JSON.stringify({variables}) 以查看它是否也能正常工作,但它没有

我在这里做错了什么吗?

$.ajax({
        type: 'POST',
        url: 'AutoComplete.asmx/getWebFormDesignFieldContents',
        data: {
            'fe_name': "*",
            'count': 200,  //this might need to be adjusted slightly.  I may want to make it more OR less.
            'also_search_fe_desc': true,
            'opts': opts
        },
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: function (result) {
            //success
            $("div.modal").replaceWith($(result));
            $("div.modal").fadeIn();
        },
        error: function (result) {
            //error
            //alert("Error: "+result.statusText);
            $("div.overlay").fadeOut();
        }
    });

在 ASP 的服务器端部分,我有:

public String getWebFormDesignFieldContents(String fe_name, int count, bool also_search_fe_desc, String opts)
{
   String retValue = "";
   ...
   return retValue;
}
4

2 回答 2

2

你需要用[WebMethod]属性装饰你的方法

[WebMethod]
public String getWebFormDesignFieldContents(
     String fe_name, 
     int count, 
     bool also_search_fe_desc, 
     String opts)

您需要更改的其他内容是您的 json 格式。你必须传递一个字符串。

data:'{"fe_name": "*", "count": 200, "also_search_fe_desc": true, "opts":' + opts + '}'

您可以使用JSON.stringify但考虑到旧浏览器不支持它,因此您可能需要处理这种情况。

您还需要处理返回逻辑。现在我只看到你返回一个空字符串。如果您显示更多代码,我们也可以为您提供帮助。

于 2012-07-03T15:32:06.400 回答
0

您需要将 retValue 编码为 json

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string jsonresult = serializer.Serialize(retValue );
于 2012-07-03T15:32:29.853 回答