1

現時点では、ajax bing マップ上に多くのポイントを作成しているユーザーがいます。ユーザーが「送信」ボタンを押すと、map.entities に格納されているすべての場所を取得し、xml 形式の文字列を作成して、DB に保存したいと考えています。

<locations> <location><lat><lon>1.234</lon></lat></location>.....</locations>

、したがって、問題ではない XML 文字列を作成した後、変数の場所に保存して、次のようにします。

$. ajax({ 
type: "POST",
url: "myPage.aspx/saveLocations"
data: {"xmlLoc: x"},
async: true,
cache: false,
success: alert ("success" + msg)
error: ....

残念ながら、これは私のデータを渡す方法ではないようです。成功したのはこれだけですが、メッセージは UNDEFINED です!!!

データを書き込む場合: x, <-- ここで発生する問題は、A POTENTIALLY DANGEROUS REQUEST IS SENT FROM THE CLIENT が発生することです。

私のサーバー側のコード:

[Web Method]
public static string saveLocations(string s)
{
    return s; //just for testing purposes
}

よくわかりません json などを使用する必要がある場合、私はかなりの初心者なので、どこから始めればよいかわかりません。どうもありがとうございました


編集:別の回避策を試していますが、常に無効なjsonプリミティブエラーが発生します!!!

var locations = '{ "location" : [';
function createBoundary() {                        
            for (x = 0; x < map.entities.getLength(); x++) {
                var pin = map.entities.get(x);
                locations += '{ "latitude": "' + pin.getLocation().latitude +'", "longitude": "' + pin.getLocation().longitude + '"},';
            }
locations += ']}';
jQuery.ajax({
                type: "POST",
                url: "Profiles_Schedules.aspx/GetXmlLoc",
                data:  eval("(" + locations + ")"),
                contentType: "application/json;charset=utf-8",
                datatype: "json",
                async: true,
                cache: false,
                success: function (msg) {
                    alert("Success " + msg.d);
                },
                error: function (x, e) {
                    alert("The call to the server side failed. " + x.responseText);
                }
            });
}
4

3 に答える 3

2

データ型を追加してみてください:

dataType: "json",

また、データは「xmlLoc」ではなく「s」である必要があると思います。これは、アクションで探しているものだからです。

そして、あなたのアクションを変更してみてください:

[HttpPost]
public static string saveLocations(string s)
{
    return s; //just for testing purposes
}
于 2012-04-13T19:40:41.050 に答える
1

コードを次のように変更してみてください。

data: {"s":"x"}

JSON のサイトでも、文字列を文字列にする場合は、キーと値のペアを引用符でフォーマットする必要があります。ただし、キーにパラメーターと同じ名前を付けることをお勧めします。

WebMethodの MSDN によると、SOAP 呼び出しを消費するため、これは WebMethodAttribute 経由では機能しない可能性があると最初は考えていました。ただし、この SO の質問は、JSON が適切な SOAP 形式にフォーマットされることを示しているという点で興味深いものです。ちょっといいですね:)

ただし、上記のことから、シリアライゼーションが機能するには、json キーがメソッド署名の命名と一致する必要があることがさらに強く感じられます。

于 2012-04-13T20:00:30.613 に答える
1

受信側についてはわかりませんが、データが認識可能な形式で渡されていません。 jQuery.ajax()データ形式をインテリジェントに推測しますが、最も速い変換は JSON への変換です。

data: '{"xmlLoc":"x"}'

適切な JSON 形式には引用符が必要です。

于 2012-04-13T19:45:06.887 に答える