このような問題を自分で解決するために、JSONを返すHttpHandlerを作成しました。
public class JsonData : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Serialize(GetData());
context.Response.ContentType = "application/json";
context.Response.Write(json);
}
}
ASPXのJavascriptでは、jQueryを使用してデータを取得します。
$.getJSON("/JsonData.ashx", null, function (data) { ... });
これは、ASPXファイルがデータを含む2番目のファイルを取得するという点で、実際には帯域外ソリューションです。
私も時々見るものはこのようなものです:
<script>
var myData = '<asp:Literal runat="server" ID="JavascriptData" />';
</script>
次に、JavascriptDataがコードビハインドに入力されます。私はこの方法があまり好きではありませんが、簡単でうまくいきます。引用符をエスケープすることを忘れないでください。