2015-09-16 11 views
5

は私がjQueryを使用して働いていますPhoneGapのアプリから、POSTデータとしてローカルページにデータを送信しようとしています働いていない:私のapi_return.phpページPhoneGapの+ jQueryのAjaxのポスト

$.ajax({ 
      method: "POST", 
      url: "http://.../api_return.php", 
      data: { name: "John", location: "Boston" } 
     }) 
      .done(function(msg) { 
      alert("Data Saved: " + msg); 
      }); 

を私は持っています次のコード:

<?php 
print_r($_REQUEST); 
?> 

奇妙なことは、私はurl: "http://.../api_return.php?test=true",を作るならば、私のPHPはtest=trueを返すということですが、私はそれがPOSTデータを返すために取得することはできません。

私が試してみました:
<access origin="*" />

答えて

3

私はそれを動作させることができましたが、残念ながら私はこの変更を行った変更がわかりません。

1)メタタグのためcontent=""connect-src *;内部を追加)のAndroidManifest.xml

3で<uses-permission android:name="android.permission.INTERNET" />を追加)config.xmlの<access origin="*" />

2を追加します。ここで私は加えられた変更の一覧は以下のとおりです。 <meta http-equiv="Content-Security-Policy" content="" />

4)JSON.stringifyのラップされたデータ。 AJAX呼び出しエンディング:

$.ajax({ 
    type: "POST", 
    url: "http://www.example.com/apicallback.php", // Example 
    data: JSON.stringify({ "name": "John", "location": "Boston" }), 
    success: function(response) { 
     console.log(response); 
     alert(JSON.stringify(response)); 
    }, 
    error: function(e) { 
     alert('Error: ' + e.message); 
    } 
}); 

5)は、第2のURL(.htaccessファイルフォルダにRewriteCondを使用していなかった1)

+0

もっと詳しい情報を教えてください。おそらく.htaccessファイルとあなたが行ったhtmlの変更を表示します。私はこの権利を得るために苦労してきました。 – FredFury

0

のAndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />​​3210に私は問題があなたのPHPであるかもしれないと思う:あなたの$アヤックスの場合

<?php 
    echo json_encode($_POST); 
?> 
+0

いいえ、データが保存されている:[] '=空白:/ – DanceSC

0

のjQueryのいくつかのバージョンメソッドを設定するための既知の問題があります。代わりに "タイプ"を使用してください。

$.ajax({ 
     url: "http://.../api_return.php", 
     data: { name: "John", location: "Boston" }, 
     cache: false, 
     type: 'POST', 
     success: function (data) { 
      alert(data); 
      console.log(data) 
     } 
    }); 
+0

これを試してみましたが、まだ何もしていません。コードが正常に動作していることを知っているので、cordova/phonegapに関連していると思います、私はタイプを試した:/方法:と成功:/ .done – DanceSC

+0

あなたのコードは 'deviceready'でラップされていますか? –

+0

はい 'receivedEvent:function(id){'私が上で述べたように、GETを使用していれば正常に動作しますが、受信側でPOSTデータが必要であるという問題があります。 – DanceSC

1

にリダイレクトをまた、あなたのリクエストヘッダに"Content-type":"application/x-www-form-urlencoded"で確認できます。

php://inputの投稿入力を見つけることはできますが、"Content-type":"application/x-www-form-urlencoded"を送信しないと$_POSTには見つからないことがあります。

0

あなたのオプションを使用すると、私はしばらくこのままでした。私はオプション3が重要だと考えました!

  1. AndroidManifestに追加config.xmlの
  2. に追加します。XML content=""から
  3. 割り当てconnect-src *;メタタグのために:<meta http-equiv="Content-Security-Policy" content="" />

私が見たエラーのようなものだった:

は 'XMLHttpRequestを' オン 'オープン' の実行に失敗しましたを拒否接続

これは私がコンテンツセキュリティポリシー

<meta http-equiv="Content-Security-Policy" 
    content="default-src * 'self' 'unsafe-inline' data: gap: 'unsafe-eval'; 
    style-src * 'self' 'unsafe-inline'; 
    connect-src * ; 
    script-src * 'self' 'unsafe-inline'; 
    media-src *"> 

そして、それは働きました!

+0

編集していただきありがとうございます。かなり新しいstackoverflow。 – bitanath