尝试AJAX一个ASP页面,但它永远不会取得成功

时间:2012-07-03 15:28:02

标签: jquery asp.net html ajax

我正在处理一些代码,似乎无法理解为什么这总是失败。我曾尝试调试它,但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;
}

2 个答案:

答案 0 :(得分: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,但请注意旧浏览器不支持它,因此您可能需要处理这种情况。

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

答案 1 :(得分:0)

您需要将retValue编码为json

System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string jsonresult = serializer.Serialize(retValue );