2013-11-27 91 views
0

我想從Ajax訪問ASP.NET處理程序。我使用錨標記將數據傳遞給它,並返回一些測試字符串。以下是代碼:JavaScript運行時錯誤:無效字符

Ajax代碼

function incvote(topicid) { 
    $.ajax({ 
     type: "POST", 
     url: "WCAccess.ashx", 
     data: JSON.stringify({ "desid": "topicid" }), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      return response.d; 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 

      alertify.error("Some error occured. Please try again."); 
     }, 
     //async: true 
    }); 

處理程序代碼

public class WCAccess : IHttpHandler { 

    public void ProcessRequest (HttpContext context) { 
     JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
     string jsonString = string.Empty; 
     List<ArgsVals> argsList = new List<ArgsVals>(); 
     context.Request.InputStream.Position = 0; 
     using (var inputStream = new System.IO.StreamReader(context.Request.InputStream)) 
     { 
      jsonString = inputStream.ReadToEnd(); 
     } 

     argsList = jsonSerializer.Deserialize<List<ArgsVals>>(jsonString); 
     string resp = ""; 
     foreach (ArgsVals arg in argsList) 
     { 
      resp += arg.desid; 
     } 
     context.Response.Write("<text>"+resp+"</text>"); 
    } 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    } 
    public class ArgsVals 
    { 
     public string desid { get; set; } 
     //public int vtype { get; set; } 
    } 
} 

一切工作順利,直到控制離開context.Response.Write()聲明。數據很好地獲取數據resp。但問題是,JavaScript顯示此錯誤:JavaScript runtime error: Invalid character

我搜索了SO和其他網站。我也試過這個解決方案:Ajax request has invalid characters 但似乎沒有任何工作。同樣的錯誤依然存在。

+0

data:JSON.stringify({desid:topicid}), – Triode

+0

已經嘗試過所有引用和未引用的變體。沒有工作。 –

+0

alertify.error()這是幹什麼用的? – Triode

回答

1

看起來你正在嘗試返回HTML/XML而不是JSON。

context.Response.Write("<text>"+resp+"</text>"); 

閱讀JSON webpages瞭解您要發回的消息的結構。

+0

謝謝這就是實際發生的事情。我將數據類型更改爲'html',它工作。 **我想問**的另一件事是,如何使用處理程序的響應更改錨標記的文本?我是這樣做的:'document.getElementById(「suplink」)。innerHTML = response.d;'但它通過處理程序傳遞將文本更改爲undefined而不是test。請幫忙。 –

+0

您已經在使用jQuery,請查看addClass和removeClass函數並添加一些CSS顏色。你也應該使用像$('#suplink')。html(response); – vogomatix

+0

好了,現在我明白了。將數據類型轉換爲html後的問題是我無法反序列化並將數據存儲在服務器端的'argsList'中。它顯示了0個元素。但是獲取數據的json字符串。 –