2011-04-21 76 views
1

我試圖控制JSON響應我發送回客戶端但沒有確切地知道如何.. 下面是一個簡單的演示:如何處理jSON XMLHttpRequest響應?

js代碼

xhr = new XMLHttpRequest(); 
xhr.open("POST", "page.aspx", true); 
xhr.send(); 

// handle the response with xhr.responseText 

的.cs代碼

bool success = false; 
    string message = String.Empty; 

    // Create JSON Response 
    var jsonData = new 
    { 
     success = success, 
     message = message 
    }; 

    Response.Write(jsonData);  

的問題是,當我看到在xhr.responseText我看到:

"{ success = False, message = } 
<!DOCTYPE html PUBLIC .... 
.... 
.. 
" 

回答

0

你想在做jsonData之後做Response.Clear()然後Response.End()。

然後你需要處理JavaScript中的JSON響應。我建議Crockford's JSON library

我還推薦使用jQuery的$ .ajax()函數,而不是手動滾動您自己的XHR調用。

PS。 Ajax調用最好是在您的ASPX頁面上聲明的ASHX資源或PageMethods/WebMethods。更好的是,放棄webforms並使用ASP.NET MVC和Controller從Controller返回的JsonResults。

PPS。如果你最終使用WebMethods,this article是非常好的。

+0

明確獨自沒有工作,結束它做了伎倆。我的回覆只包含成功和消息 - 我是否真的需要庫?放棄webforms只是因爲你在這裏看到的? – Nir 2011-04-21 14:55:11

+0

在這種情況下,您可以投我的答案並將其標記爲正確:)您不一定必須放棄webforms,但我建議使用現有的庫。站在巨人的肩膀上 - 他們毫無疑問地解決了你還沒有意識到的問題:) – 2011-04-21 15:00:16

0

你需要Response.Clear()來清除響應之前Response.Write

0

您的cs代碼沒有生成有效的JSON(除了在JSON數據之後顯示其他內容)。所有JSON描述符都必須用雙引號,所以必須有任何字符串值。值通過冒號分開描述符。例如: {「success」:false,「message」:「它沒有工作」}。

看看http://json.org/圖書館使用特定的語言。