0

たとえば単純なjsonデータを取得するために、jQueryとPhoneGapを使用したajax呼び出しの実用的なソリューションをすでに見つけました。しかし今、HTTP Post を CGI プログラムに送りたいと思っています。私はすべてをコーディングし、ブラウザでは正常に動作しましたが、Android 4.1 スマートフォンに apk ファイルをインストールすると、ajax() 呼び出しからエラーが発生しました。私は今、何をすべきか分かりません。コードは次のようになり、私が言ったように、PC のブラウザーで動作します (Android のブラウザーでは、Firefox か Android ブラウザーかに関係なく、アプリとしてではなく動作しません)。

$.ajax({
    url: "http://ip/thing.CGI",
    type: "POST",
    username: "name",
    password: "pw",
    data: params
}).always(function( data, textStatus, jqXHR ) {
    alert(textStatus + ": " + data);
});

誰かがこれに対する解決策を持っていますか? ありがとうございました

解決:

リクエストヘッダー「Authorization」を手動で設定し、ユーザーとパスワードをbtoa()でエンコードする必要があることがわかりました。これを ajax 設定配列に追加する必要があります。たとえば、これは次のように機能します。

$.ajax({
    url: "http://ip/thing.CGI",
    type: "POST",
    headers: {
         "Authorization" : "Basic " +  btoa("user:password")
        },
    data: params
}).always(function( data, textStatus, jqXHR ) {
    alert(textStatus + ": " + data);
});

したがって、これは CGI プログラムを呼び出すかどうかとは何の関係もありませんでしたが、サーバーの基本的な承認とは関係ありませんでした。

4

1 に答える 1

0

クロスオリジンのリソース共有は許可されていない可能性があります。

次の方法で有効にします。

またはのいずれcrossDomain: true$.support.cors = true

$.ajax({
    url: "http://ip/thing.CGI",
    type: "POST",
    username: "name",
    crossDomain: true,
    password: "pw",
    data: params
}).always(function( data, textStatus, jqXHR ) {
    alert(textStatus + ": " + data);
});

また

$.ajax({
    url: "http://ip/thing.CGI",
    type: "POST",
    username: "name",
    $.support.cors = true,
    password: "pw",
    data: params
}).always(function( data, textStatus, jqXHR ) {
    alert(textStatus + ": " + data);
});
于 2013-09-28T19:17:50.170 に答える