2016-06-15 11 views
1

以下のコードは、エラーコールバック関数をトリガします。手伝って頂けますか ? 実は私がしようとしている事がAJAXからPHPデータを取得

HTML

<body> 
    <div> 
    <form id="user"> 
     NOM : <input type="text" name="name"/> 
    </form> 
     <button id="tst" onclick="SHOW();">CLICK</button> 
    </div> 

をPHPでフォーム内のデータを取得し、さらなる処理のためのAjaxにこれらのデータを返送されるJavaScript

function AFFICHER(){ 

$.ajax({ 
    type: 'POST', 
    url: 'http://localhost:8012/myscript.php', 
    data: $('#user').serialize(), 
    dataType: "json", 
    crossDomain: true, 
    success: function(result) { 
     console.log(result); 
    }, 
    error: function(xhr, textStatus, errorThrown) { 
    console.log('ajax loading error...'); 
    return false; 
    } 
}); 


} 

マイ・PHP

AJAX呼び出しがJSONである後
<?php 
$decoded = json_decode($_POST['data'],true); 
foreach ($decoded as $value) { 
    echo json_encode($value["name"]); 
} 

?> 

エラーがPHPファイルにデータを復号化する必要はありません

enter image description here

+0

'"以下のコードは、エラーコールバック関数をトリガします。 " - エラーは...? – David

+0

A. '$ _POST'データを' json_decode() 'する必要はありません。' $ _POST ['data'] 'はあなたの考えではありません。 () 'ループと' json_encode() 'は* post *ループです。 – Marcus

+0

@Davidエラーは "ajax loading error ..."です。私のコールバックのように –

答えて

2

$('#user').serialize()は(フォーム入力name="name"から入力された名前であること)のような文字列name=<input-value>であなたを残します。フォームが大きくなればなるほど、データストリングなどに格納される値は増えます。 name=marcus&phone=555-555-5555&location=interwebs

直接あなたのPHPスクリプトでそれらにアクセスするには、(あなたがあなたの$.ajax()設定でtype: 'POST'指定されたため)$_POST配列からそれらを取得:あなたはjson_decode()ない実行それを必要とし

echo $_POST['name']; // marcus

をあなたのデータはJSONに入っておらず、$_POST['data']にアクセスすることもできません。なぜなら、そのキーは$_POST配列に存在しないからです。

foreach()ループは冗長です。問題のデータ(戻りたいと思っているデータ)は既に$_POST配列に格納されています。

あなたのプログラムは非常に基本的なので、$_POST配列をエンコードして送り返すだけです。これは、あなたのPHPスクリプトで必要なすべてのです。そして、

echo json_encode($_POST); 

、応答がJSONになるため、あなたは$.ajax().success()コールバック関数にキー/プロパティによって値にアクセスすることができます

... 
success: function(result) { 
    console.log(result.name) // will log the value stored in 'name' 
}, 
error: function(xhr, textStatus, errorThrown) { 
    console.log('Status: ' + textStatus, 'Error: ' + errorThrown) 
} 

さらにエラー処理を追加して、何かがうまくいけば何が起こっているのかを実際に見ることができます。あなたのプログラムをよりよく理解するために、エラーを受け入れることを学ぶ。明らかな理由から、「は機能しませんでした。」、「データベース接続に失敗しました。」、「ajax call no worky!」のような一般的なエラーは無意味です。それらはコード内の単なるブレークポイントですが、実行された理由について貴重なフィードバックを提供しません。

+0

ありがとうございました。助かりました –

0
<?php 
$decoded = json_decode($_POST['data'],true); 
foreach ($decoded as $value) { 
    return[]=$value["name"]; 
} 
echo json_encode($return); 
?> 
+0

まだエラーブローを取得していません –

+0

'return []'は機能しません。あなたは$ return [] 'の' $ 'がありません。 – Marcus

0

です... dataType: "json"は、応答のデータ型を意味しています。

関連する問題