的簡單示例(問題與兩個回覆的帖子的幫助下解決了 - 見下文)asp.net jQuery的AJAX JSON:交換數據
我將不勝感激幫助得到一個之間交換數據的JSON數據的簡單例子瀏覽器(使用JavaScript/JQuery)和ASP.NET(使用Visual Studio 2010)。
當我點擊一個按鈕時,執行以下操作:
<script type="text/javascript">
bClick = function() {
var myData = { "par": "smile" };
alert("hi "+myData.par);
$.ajax({
url: "ericHandler.ashx",
data: myData,
dataType: 'json',
type: 'POST',
contentType: 'application/json; charset=utf-8',
success: function (data) { alert("DIDit = " + data.eric); },
error: function (data, status, jqXHR) { alert("FAILED:" + status); }
});
}
</script>
在Visual Studio中,我有一個ASHX文件相關聯下面的代碼。當我運行它並單擊按鈕時,一切都按預期工作,除非我沒有看到myData傳遞給C#代碼 - 我在調試器中查看context.Request.QueryString並顯示「{}」。
我所看到的例子使用
string stringParam = (string)Request.Form("stringParam");
但Visual Studio的 「請求」 似乎並沒有被定義。我想要做的就是看到數據移動到兩邊,而且我看起來已經走到了一半。任何幫助,將不勝感激。
--C#代碼 -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace CSASPNETSerializeJsonString
{
/// <summary>
/// Summary description for ericHandler
/// </summary>
public class ericHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string rq = context.Request.QueryString["par"];
context.Response.ContentType = "application/json";
context.Response.Write("{\"eric\":\"12345\"}");
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
*議決 首先,如果你想從JavaScript發送一些表單參數ASP.NET應該使用Ajax調用在下面的第二篇文章,不要在數據上使用stringify。換句話說,如果不指定要發送的數據是json,那麼缺少任何規範默認爲'application/x-www-form-urlencoded')。這將導致對象的字段以「url」格式添加(field = X & field2 = Y & field3 = Z ..),並因此在ASP.NET中使用Request.Form [「field」]顯示。其次,如果你真的想發送JSON數據,那麼指定這個類型是發送的內容(就像我上面所做的那樣),並在接收端使用InputStream。然後需要進一步解析接收到的字符串來獲取字段值。
在我的示例中,我發回的JSON數據具有「手動」編碼爲字符串。我相信有一個JSON序列化例程,以便可以發送C#對象。
您的例子顯示ASP.NET被傳遞給瀏覽器的數據,但我遇到的問題是移動它另一個方向。因此,失敗的行是:「string rq = context.Request.QueryString [」par「];」 - 我試圖讓myData的定義從瀏覽器傳遞到ASP.NET。任何進一步的想法(並感謝迄今爲止的努力!)? –
謝謝!這是有幫助的 - 我會把我的總結放在我原來的文章中。 ...埃裏克 –