从JS调用ASP.NET页面并发送Response

时间:2014-01-14 12:38:28

标签: javascript asp.net ajax json webforms

我有一个JS脚本:

  $.ajax({
        type: "GET",
        url: ServiceAddress + "/Service.aspx?action=LoadRandomImagePath&userID=" + USER_ID,
        success: function (result) {
            if (result.LoadRandomImagePathResult.ID != 0) {
        //something
        }

调用Service.aspx时:

Response.Write(svc.LoadRandomImagePath(int.Parse(Request.QueryString["userID"])));

svc.LoadRandomImagePath返回JSON并将其写入Response。

我的问题如下。 JS方面的结果是Service.aspx的完整代码:

{JSON HERE}  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> </title></head> <body> <form method="post" action="Service.aspx?action=LoadRandomImagePath&amp;userID=18" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZLyq7A39QtHu0Ngft6E/6ZwTABk29noGDsoP6FKK6UIo" /> </div> <div> </div> </form> </body> </html>

但我想要的只是JSON响应,没有页面代码。我怎样才能做到这一点?有可能吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试在初始请求中将返回数据类型指定为JSON?

 $.ajax({
        type: "GET",
        dataType: "json",
        url: ServiceAddress + "/Service.aspx?action=LoadRandomImagePath&userID=" + USER_ID,
        success: function (result) {
            if (result.LoadRandomImagePathResult.ID != 0) {
        //something
 }

此外,您还需要清除已写入的内容并更改JSON页面的数据类型:

Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(svc.LoadRandomImagePath(int.Parse(Request.QueryString["userID"])));
Response.End();