デバイスに埋め込まれた Web サーバーに簡単なコマンドを送信するスクリプトに取り組んでいます。サーバーが何であるか正確にはわかりません(組み込みLinux上のApacheのフレーバーだと思います)。私が求めていることは問題ではありません。
サーバー上のコードは、jQuery の$.ajax()
関数から送信された URL と Chrome から送信されたまったく同じ URL に対して異なる反応を示しています。javascriptを機能させるために、jQueryがそうではないというこのリクエストでChromeが何をしているのかを把握する方法を見つけようとしています。
詳細:
デバイスに投稿してコマンドを送信するときは、次のようにします。
$.ajax({
type: "GET",
url: urlPrefix+'/setsetting/'+name+'='+value,
success: function(r) {
//command was sent
},
error: function(e) {
//some http error
}
});
値にスペースが含まれていないリクエストを行うと、サーバーは適切に機能します。ただし、値にスペースが含まれているリクエストを行うと、サーバーはその仕事をしません。つまり、サーバー上のコードが URL 内のスペースを処理する方法に問題があることは明らかですよね? 奇妙なことに、このコードで作成された URL を取得してブラウザ ウィンドウに直接入力すると、値にスペースが含まれていても、サーバーはその役割を果たします。したがって、この URL は私のスクリプトから送信されます。
http://[ip]/setsetting/setting1=value 1
動作しませんが、同じ URL をブラウザ (Chrome) に接続すると動作します。Chrome はスペースを に変更し%20
ます。コードの値をフォーマットしてスペースを置き換えようとしまし%20
たが、役に立ちません。$.ajax()
contentType 属性を他のものに追加しようとしましたが、どれも役に立ちませんでした。
編集: $.ajax() のエラー関数が起動していることに気付きました。e.responseText は、「400 - Bad Request」という html ページです。うーん?