0

我正在调用 jquery ajax 到一个页面,如下所示

  <script type="text/javascript">
    function Showgrid() {
        $.ajax({
            type: "GET",
            url: "popup.aspx",
            contentType: "application/json; charset=utf-8",
            data: {locale: 'en-US' },
            dataType: "json",
            success: function (data) {
             $("#target").html(data.d);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(jqXHR.responseText);

            }
                    });

    }
</script>

在 popup.aspx 页面加载时,我将代码编写为

 protected void Page_Load(object sender, EventArgs e)
{
    Response.ContentType = "text/plain";
    Response.Write(Request.QueryString[0]);
    Response.Write(DateTime.Now.ToString());
    Response.End();
}

我得到响应,但不是在成功方法中,而是在错误函数中 请提出问题所在

4

3 回答 3

0

您来自 .aspx 页面的输出不是 json 类型。在写入响应或更改 dataType 之前使用 Json 编码:文本

于 2013-07-08T09:39:08.257 回答
0

如前所述,将类型更改为 POST 并将数据括在引号中。在服务器端,您需要调用 Web 方法。在传递参数“locale”时,您不能使用 page_load。请参阅下面修订的 JSON 函数和服务器代码(假设您使用的服务器端代码是正确的):

protected void Page_Load(object sender, EventArgs e)
    {

    }


[System.Web.Services.WebMethod]
    public static void ShowGrid(string locale)
    {
        HttpContext.Current.Response.ContentType = "text/plain";
        HttpContext.Current.Response.Write(HttpContext.Current.Request.QueryString[0]);
        HttpContext.Current.Response.Write(DateTime.Now.ToString());
        HttpContext.Current.Response.End();
    }

JSON:

function Showgrid() {
    $.ajax({
        type: "POST",
        url: "popup.aspx/ShowGrid",
        contentType: "application/json; charset=utf-8",
        data: "{ 'locale': 'en-US' }",
        dataType: "text",
        success: function (data) {
            $("#target").html(data.d);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(jqXHR.responseText);

        }
    });

}
于 2013-07-08T09:41:52.117 回答
0

更改为POST,即type: "POST"。并在页面转向Response.Write(Request[0]);

于 2013-07-08T09:28:25.987 回答