(質問は 2 つの返信投稿の助けを借りて解決されました。以下を参照してください)
ブラウザー (JavaScript/JQuery を使用) と ASP.NET (Visual Studio 2010 を使用) の間で JSON データを交換する簡単な例を教えていただければ幸いです。
ボタンをクリックすると、以下が実行されます。
<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 ファイルに関連付けられています。それを実行してボタンをクリックすると、C# コードに渡された myData が表示されないことを除いて、すべてが期待どおりに機能します。デバッガーで 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 にいくつかのフォーム パラメーターを送信する場合は、以下の 2 番目の投稿で ajax 呼び出しを使用し、データに対して stringify を使用しないでください。つまり、送信されるデータが json であると指定されていない場合、指定がない場合、デフォルトで 'application/x-www-form-urlencoded' になります)。これにより、オブジェクトのフィールドが「url」形式 (field=X&field2=Y&field3=Z..) で追加され、Request.Form["field"] を使用して ASP.NET に表示されます。
第二に、本当に JSON データを送信したい場合は、このタイプが送信されるものであることを指定し (上記で行ったように)、受信側で InputStream を使用します。フィールド値を取得するには、受信した文字列をさらに解析する必要があります。
私の例では、JSON データを「手動で」文字列にエンコードして送り返しています。C# オブジェクトを送信できるように、JSON シリアライゼーション ルーチンがあると思います。