2017-03-08 12 views
-1

JSONをPHPにポストしようとしています。そこで、デコードしてMySQLデータベースにプッシュする必要があります。PHPへのAJAX POSTは機能していません

これは私のJavaScriptコードです。

var dictstring = "{sensorid: \""+ name +"\", x: " +pos.x +" ,y: "+pos.y+"}"; 
        console.log(dictstring); 

        $.ajax({ 
         type: "POST", 
         contentType: 'application/json; charset=utf-8', 
         dataType: "json", 
         url: "myfile.php", 
         data: JSON.stringify(dictstring), 
         success: function(data){ 
         alert('Success'); 
         }, 
        error: function(e){ 

        console.log(e.message); 
         } 
        }); 

そして、これは私がPHPの一部の作品を知っている私のPHPコード

<?php 


$jsonData = file_get_contents('php://input'); 

$data_back = json_decode($jsonData); 
$unit = $data_back->{"sensorid"}; 
$x_axis = $data_back->{"x"}; 
$y_axis = $data_back->{"y"}; 


// Create connection 
$con=mysqli_connect("xxxxxxx:xxxx","xxxxx","xxxx","xxxxxxxx"); 

// Check 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

//Insert Values 
$sql_hm = "INSERT INTO xxxx(unit, x_axis, y_axis) 
VALUES ('$unit', $x_axis, $y_axis)"; 

if ($con->query($sql_hm) === TRUE) { 
    echo "values inserted successfully"; 

} else { 
    echo "No data "; 
} 



?> 

である - 私はcontentTypeのでJSONデータを掲載しようとした:RESTクライアントアプリケーションからアプリケーション/ JSONをし、それが動作します。しかし、私がJavascriptコードでそれを試しているとき、それはPOSTingではありません。私はコンソールで "dictstring"文字列の値を見ることができます。私は "成功"の警告も見ることができません。興味深いことに、dataType: "json"行を削除すると、 "Success"アラートが表示されます。しかし、私はデータベースの値を見ることができないので、POSTingはまだ起こっていません。

私はここで何が欠けていますか?

+0

なぜ 'dictstring'が文字列ですか?なぜJSON.stringify()に渡していますか? – Andreas

+0

'dictstring'はすでにJSON文字列であるため、' stringify 'する必要はないと思います。 –

+0

独自のJSONを記述しないで、同じ質問を複数回投稿しないでください。 – miken32

答えて

2
var dictstring = "{sensorid: \""+ name +"\", x: " +pos.x +" ,y: "+pos.y+"}"; 

あなたは文字列を持っています。

data: JSON.stringify(dictstring), 

次に、その文字列のJSON表現に変換します。

$data_back = json_decode($jsonData); 

文字列にデコードします。

$unit = $data_back->{"sensorid"}; 

あなたはオブジェクトのように扱おうとします。


スタートオブジェクトではなく、文字列で:

var dictstring = { sensorid: name, x: pos.x, y: pos.y }; 

...あなたはおそらくあまりにも異なる変数名を欲しいです。データがサーバから返された場合

+0

はい、そのトリックがありました。情報をありがとう... – NoMadic

0

dictstringはJSON形式で既にある、あなたのJSでJSON.stringify

+0

JSON.stringify(dictstring)を削除しようとしましたが、それをデータとして保存しました:dictstring - でもどちらも動作しませんでした – NoMadic

-1

オーケーを必要としない、それは愚かに聞こえるかもしれませんが、あなたは量ので、あなたはJavaスクリプトではJQueryを使用していると述べているようにしてください行っています時間私はajaxをやってきたし、なぜ私はJQueryを宣言していないので、それが動作しない理由を把握できません。このような

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"> 
0

dataType: "json"が使用されるべきであるあなたがメッセージの配列を作成し、あなたのjsへJSONデータを返すためにecho json_encode($array);を使用することができますJSON

です。

あなたが提供した質問と情報から明らかな問題は見つけられませんでしたが、成功関数にconsole.log(data)を使用して返される内容を表示することをお勧めします。あなたは、少なくともだけprint_r($data_back);

$data_back['sensorid']

または

を試してみて、 $data_backのデータ構造を参照して、アクセスしてみてください、それはあなたのPHPページをヒットした場合知っているか 404または 500.

ようないくつかのエラーで返されますそれに応じてデータ。

+0

それを試してみました。 jsonデータを受信して​​いません。エラー:注意:C:\ wamp \ www \ heatmap \ myfile.phpの非オブジェクトのプロパティを取得しようとしています 7 – NoMadic

関連する問題