1

私は関数saveを呼び出しており、この関数では$.postを'upp.php'に送信しています。

function save(){

var oldItems = JSON.parse(localStorage.getItem('itemsArray')) || [];

var newItem = {};
var num = document.getElementById("num").value;

newItem[num] = {
    "methv": document.getElementById("methv").value
    ,'q1': document.getElementById("q1").value,
    'q2':document.getElementById("q2").value,
    'q3':document.getElementById("q3").value,
    'q4':document.getElementById("q4").value,
    'comm':document.getElementById("comm").value
};
oldItems.push(newItem);
localStorage.setItem('itemsArray', JSON.stringify(oldItems));}

$.post('upp.php',{ items: JSON.stringify(oldItems) }, function(response) {

upp.phpで私が使用しているもの:

<?php 
$array = json_decode($_POST['items'], True);
foreach ($array as $key=>$line) {

}
?>

しかし、私は「アイテム」の未定義のインデックスを取得しています

編集:

応答を投稿した後に得られるもの

<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css.css" media="all">
<meta name="viewport" content="initial-scale=1.0"/>
<script src="alan.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<title>Data Collection</title>
</head>

<body>
<!--Wrapper-->
<div id="wrap">

<!--Header-->
<div id="header">
<h1> Data Collection </h1>
</div>



<div id="menu">
    <ul>
        <li><a href="homepage.php">Home</a></li>
        <li><a href="comment.php">Comments</a></li>
        <li><a href="logout.php">Logout</a></li>

    </ul>
</div><input type="text" id="data"/>


<div id="heading">
<h3> Welcome, alan </h3>
</div>
array(1) {
  ["items"]=>
  string(167) "[{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}},{"1173627548":{"methv":"dont know","q1":"-","q2":"-","q3":"U","q4":"-","comm":""}}]"
}


<div id="footer">
<h1> Footer </h1>
</div>

</div> <!--End of wrapper-->

</body>
</html>

ええ、私はこれをすべて取得しますが、情報はそこにありますが、他の情報も表示しています

4

2 に答える 2

3

Ajax リクエストが成功した後window.location.href = "upp.php";、同じ URL に対して GET リクエストを行います。

GET リクエスト$_POSTなので空なので、エラーが発生するはずです。

$_POST['items']が配列キーかどうかをテストし、コードを 2 つの状態に分岐します。

于 2013-03-15T16:30:21.990 に答える
0

投稿を行うために JSON に変換する特定の理由はありますか? フォームをシリアル化し、jQuery を使用して投稿するだけでは、余計な作業をしなくてもオブジェクトを PHP で使用できます。

html...

<form id="myForm">
   <input name="q1"></input>
   <input name="q2"></input>
   ...
</form>

* js... *

var formdata = $("#myForm").serialize();
$.ajax({
   type:'POST',
   url:'upp.php',
   data:formData,
   success:function(){ /* ... */ }
});

php...

echo $_POST['q1'];
echo $_POST['q2'];
于 2013-03-15T16:37:29.770 に答える