8

以下のようにリクエストを送ることはできますか?パラメータが JSON スタイル オブジェクトに割り当てられている。エラーしか出ません。しかし、REST クライアントを使用して RAW データを選択すると、問題ありません。私は間違ったコードを書いたに違いないと思います。JavaScriptで生のJSONデータを送信するには? 誰でも私を助けることができますか?

xmlhttp = new XMLHttpRequest();
var url = "https://someURL";
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function () { //Call a function when the state changes.
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        alert(xmlhttp.responseText);
    }
}
var parameters = {
    "username": "myname",
    "password": "mypass"
};
// Neither was accepted when I set with parameters="username=myname"+"&password=mypass" as the server may not accept that
xmlhttp.send(parameters);
4

2 に答える 2

21

いいえ。send()メソッドはさまざまな引数の型を取ることができますが、プレーンなオブジェクトはそれらの 1 つではありません (そのため、おそらくtoString()呼び出されて に変換されることになります"[Object object]")。

JSON を送信する場合は、次のことを行う必要があります。

  1. JSON を送信しているとします。xmlhttp.setRequestHeader("Content-type", "application/json");
  2. JavaScript オブジェクトを JSON テキストの文字列に変換します。var parameters = JSON.stringify({"username":"myname","password":"mypass"});
  3. サーバー側で application/x-www-form-urlencoded データの代わりに JSON を受け入れる準備をしてください。

また、絶対URIを使用しているため、クロスドメインの問題が発生する可能性があることにも注意してください。

于 2013-09-23T15:19:56.827 に答える
2
xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", AjaxURL, true);
xmlhttp.onreadystatechange = function () { //Call a function when the state changes.
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
cb(xmlhttp.responseText);               
}
};
xmlhttp.send(JSON.stringify(Idata)); 
于 2016-06-20T05:39:59.447 に答える