0

これまでに学んだように、クライアント側の AJAX スクリプトは、サーバーから静的な.json または .xml ファイルを読み取ることができます (例: http://www.mydomain.com/all_cities.xml ) 。

しかし、クライアント側でのユーザー入力に従って動的に.json または .xml ファイルを生成する必要があります。たとえば、ユーザーが DropDownList1 から州を選択し、AJAX が DropDownList2 にその州の都市を入力するとします。すべての都市を送信してから、クライアント側で目的の都市をフィルタリングするのは好きではありません!

したがって、ASP.NET がこれをどのように処理できるかを知りたいです。たとえば、「http://www.mydomain.com/cities.json?state=9」が表示された場合、都市という名前の動的に作成された json ファイルで応答する必要があります。州 #9 にある都市を含む json?

前もって感謝します!

4

4 に答える 4

1

これを行うにはいくつかの方法があります - 基本的に、最も簡単な方法は、標準の Web ページ (フォーム、MVC コントローラー/アクションなど) を用意することです。 html を返すと、XML が返されます。(XML を返すとは、ページのコンテンツを XML のみにして、適切なヘッダーを追加することを意味します)

あなたの質問は広すぎて詳細を説明できませんが、簡単に言えば、それは簡単に実行でき、クライアント (この場合は JavaScript) は通常、違いを見分けることができません。

于 2012-05-08T17:33:23.713 に答える
0

これを達成する方法の1つは、

クライアント側: jQuery を使用し、メソッド/サービスを呼び出して JSON を返します。何かのようなもの

function CallService() {
    $.ajax({
        type: "GET", //HTTP verb
        url: serviceUrl,
        data: "{}", //Data sent to server
        contentType: "application/json; charset=utf-8", // content type sent to server
        dataType: "json", //Expected data format from server e.g. json, xml etc.
        success: OnSuccess
    });
}

function OnSuccess(data) {
    var options = $(".InputDropDown"); //.InputDropDown is class assigned to dropdown
    //don't forget error handling! 
    $.each(data, function (index) {
        var item = data[index];
        options.append($("<option />").val(item.Id).text(item.Name));
    });
}

このメソッドは、最初のドロップダウンの変更時に呼び出されます

サーバー側: JSON を返す Web サービス (ま​​たは WCF) メソッドまたはページ メソッド (Web アプリ内) を使用します。

    [WebGet(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "Countries")]
    List<Country> GetCountries();

jQuery などを初めて使用する場合は、この手順を実行することを強くお勧めします。

PageMethod とプレーンな JavaScript を使用する (WCF を使用しない) 代替アプローチの例は、 LINK-1LINK-2にあります。

于 2012-05-08T17:51:44.690 に答える
0

WCF サービスを作成する場合は、州をパラメーターとして受け取り、その州の都市を返す WebGet を使用できます。

[WebGet(UriTemplate = "cities/{state}")]
public List<string> GetCities(string state)
{
    List<string> citiesFromState;
    // Build up a List of cities based on the state sent
    return citiesFromState;
}

アプリケーションの web.config でautomaticFormatSelectionEnabledtrue に設定して、WCF が HTTP 要求の 'Accept' ヘッダーを調べて、応答を送信する形式 (xml または json など) を決定するようにします。

<behavior name="webHttpBehavior">
    <webHttp automaticFormatSelectionEnabled="true" helpEnabled="true"/>
</behavior>

これにより、WCF がシリアル化を処理できるようになります。それ以外の場合は、WebGet.

于 2012-05-08T17:29:46.880 に答える
0

静的コンテンツを読みたい場合、.JSON は IIS でサポートされている既定の MIME-TYPE ではないため、既定では .XML しか使用できません。jQuery の ajax() メソッドを使用して静的な静的 XML ファイルをページに読み込む方法の例を次に示します。

静的ファイル「cities.xml」。

<?xml version="1.0" encoding="utf-8" ?>
<cities>
    <city>City A</city>
    <city>City B</city>
    <city>City C</city>
</cities>

静的 XML を読み取り、JavaScript 配列に解析する jQuery コード。

$.ajax({
    url: 'cities.xml',
    dataType: 'xml',
    success: function (xml)
    {
        var cities = [];

        $(xml).find('city').each(function ()
        {
            cities[cities.length] = $(this).text();
        });

        // Do something with your array of values here.
    }
});
于 2012-05-08T18:02:58.180 に答える