ส่ง json ให้ php โดยใช้ jquery

function addProduct()
{
 var dataCell=new Array(6);
 
 var tb=document.getElementById("tbProductDetail");
 var numRow=tb.rows.length-2;  //get num row
 document.getElementById("no").value=numRow;
 dataCell[0]=document.getElementById("no");
 dataCell[1]=document.getElementById("model");
 dataCell[2]=document.getElementById("description");
 dataCell[3]=document.getElementById("qty");
 dataCell[4]=document.getElementById("unit");
 dataCell[5]=document.getElementById("x");  //wait function substring(size)
 dataCell[6]=document.getElementById("remark");
 
 data[dataRow]=new Array(dataCell[0].value,dataCell[1].value,dataCell[2].value,dataCell[3].value,dataCell[4].value,dataCell[5].value,dataCell[6].value);
}


function sentData()
{
 if(req)
 {
  var gen=Math.random();
  var call="";
  call+="receipt.php?gen="+gen;
  call+="&dat="+dat;
  //document.writeln(call);
  req.open("GET",call);
  req.onreadystatechange=response;
  req.send(null);
 }else
  alert("aaa");

}

function submitData()
{
 dat = JSON.stringify(data);
 sentData();
}


///////////////php
<?

 $output =json_decode($_GET["dat"]);
 
 //echo $output[0][1]; //456
 echo $data[1][1];
?>
 

จากโค๊ด ผมส่งข้อมูล JSON ไปให้ php ประมวลผลโดยลอง debug ข้อมูลที่ส่งไปได้ประมาณนี้ครับ

dat=[[1,"aaa","aaa","aaa","aaa","aa","aaaaa"],[2,"bbb","bbb","bbb","bbb","bb","bbbbb"],

[3,"ccc","ccc","ccc","ccc","cc","ccccc"]]

แล้วจะลองให้ php แสดงผลข้อมูลตามโค๊ดอ่ะครับ แต่มันกลับแสดงผลเป็นแค่ blank ( น่าจะเป็นค่า null )

จะต้องทำยังไงถึงจะ decode ข้อมูลที่ส่งไปมาใช้ได้อ่ะครับ
ผมงงมาหลายวันแล้ว T-T มือใหม่ด้วยครับ


ขออีก 1 คำถามครับ
ผมสมัครสมาชิกไปแล้วดันใส่ email ผิด ผมจะแก้ไขได้อย่างไรอ่ะครับ

ขอบคุณครับ
 

23 มิ.ย. 2552 6 6,047

อันนี้เป็นโค๊ดเต็มๆ ครับ

อย่าลืมload jquery มาใช้ด้วยครับ(บริการเต็มที่)
http://www.dwthai.com/img/jquery.js


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<link href="GolbalCSS.css" rel="stylesheet" type="text/css"/>
<link type="text/css" rel="stylesheet" href="dhtmlgoodies_calendar/dhtmlgoodies_calendar.css?random=20051112" media="screen" />
<script type="text/javascript" src="dhtmlgoodies_calendar/dhtmlgoodies_calendar.js?random=20060118">
</script>
<script type="text/javascript" src="json2.js">
</script>

<script>

var req=createRequest();

function createRequest()
{
var obj=false;
if(window.XMLHttpRequest) //not ie
obj=new XMLHttpRequest();
else if(window.ActiveXObject) //ie
obj=new ActiveXObject("Microsoft.XMLHTTP");
return obj;
}

function sentData()
{
if(req)
{


var gen=Math.random();
var call="";
call+="receipt.php?gen="+gen;
call+="&dat="+dat;
alert(call);
req.open("GET",call);
req.onreadystatechange=response;
req.send(null);
}else
alert("aaa");

}



function response()
{
if(req.readyState==4)
{
var x=document.getElementById("resp");

if(req.responseText==1)
x.innerHTML="database problem!?";
else
{
x.innerHTML=req.responseText;
}
}
}
function setDefault()
{
document.clear();

}

var dataRow=0;
var data= new Array();

function addProduct()
{
var dataCell=new Array(6);

var tb=document.getElementById("tbProductDetail");
var numRow=tb.rows.length-2; //get num row
document.getElementById("no").value=numRow;
dataCell[0]=document.getElementById("no");
dataCell[1]=document.getElementById("model");
dataCell[2]=document.getElementById("description");
dataCell[3]=document.getElementById("qty");
dataCell[4]=document.getElementById("unit");
dataCell[5]=document.getElementById("x"); //wait function substring(size)
dataCell[6]=document.getElementById("remark");

data[dataRow]=new Array(dataCell[0].value,dataCell[1].value,dataCell[2].value,dataCell[3].value,dataCell[4].value,dataCell[5].value,dataCell[6].value);

var row = tb.insertRow(numRow); //create row
for(var i=0;i<7;i++)
{
var cell = row.insertCell(i); //create cell 0
var textNode = document.createTextNode(dataCell[i].value); //create text in cell 0
cell.appendChild(textNode); //insert row
//alert(data[i]+" "+dataRow);
}
//alert(data[dataRow][1]);
dataRow++;

//setDefault();

}

function checkData()
{

}

var dat;
function submitData()
{
//data=data.toJSONString();
//var dd=new Array();
dat = JSON.stringify(data);
/*for(var i=0;i<20;i++)
dd[i]=new Array(i+2,i-2);
dat = JSON.stringify(dd);*/

sentData();
//alert(val);

}

</script>
<title>Receipt</title>
</head>

<body>
<table width="800px">
<tr>
<td height="70px" valign="top">
<span style="font-size:30px;">Receipt</span><div id="resp"></div>
</td>
</tr>
<tr>
<td>
<table width="80%">
<tr>
<td width="20%">
Date<br>
<input type="text" readonly style="width:100px" id="dateReceipt"/>
<input type="button" style="height:20px; vertical-align:top" value="v" onclick="displayCalendar(dateReceipt,'dd/mm/yyyy',this)"/>
 </td>
<td width="15%">
Receive No.<br>
<input style="width:100px" type="text" id="receive" />
 </td>
 <td width="25%">
Description<br>
<input style="width:180px" type="text" id="receive" />
 </td>
 <td width="25%">
Remark<br>
<input style="width:150px" type="text" id="receive" />
 </td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<span style="font-size:20px" >Product Detail</span>
<table id='tbProductDetail' cellspacing="3"> <!-- Product Detail -->
<tr>
<th width="5%">
No.
</th>
<th width="20%">
Model
</th>
<th width="35%">
Description
</th>
<th width="5%">
Qty
</th>
<th width="10%">
Unit Name
</th>
<th width="10%">
size(cm)<br />
X Y Z
</th>
<th width="20%">
Remark
</th>
</tr>
<tr>
<td><div id='no'></div>
</td>
<td>
<input type="text" style="width:98%" id="model" />
</td>
<td>
<input type="text" style="width:98%" id="description" />
</td>
<td>
<input type="text" style="width:95%" id="qty" />
</td>
<td>
<input type="text" style="width:95%" id="unit" />
</td>
<td align="center">
<input type="text" style="width:20%" id="x" />
<input type="text" style="width:20%" id="y" />
<input type="text" style="width:20%" id="z" />
</td>
<td>
<input type="text" style="width:95%" id="remark" />
</td>
</tr>
<tr>
<td></td>
<td><input style="width:40px" type="button" onclick="addProduct();" value="Add" /></td>
</tr>


</table>
</td>
</tr>
<tr>
<td>
<hr width="80%" align="left" />
<table align="right">
<tr>
<td>
<input type="button" onclick="submitData();" id="submit" value="submit" /> </td>
<td><input name="reset" type="reset" id="reset" value="cancle" /></td>
</tr>
</table>
</td>
</tr>
</td>
</tr>
</table>
</body>
</html>
#1

 คริกที่ชื่อ ไต้ รูปครับเพื่อเข้าหน้าแก้ไขข้อมูส่วนตัว
#2

ข้อมูล JSON น่าจะอยู่ในรูปนี้มากกว่า

$json '{"a":1,"b":2,"c":3,"d":4,"e":5}';

มันถึงจะถูกถอดโดย json_decode() ได้

เข้าใจว่ารูปแบบของข้อมูลมันผิด ก็เลยถอดไม่ได้ครับ

อ้างอิงจาก หัวข้อผมสมัครสมาชิกไปแล้วดันใส่ email ผิด ผมจะแก้ไขได้อย่างไรอ่ะครับ


คลิกที่ชื่อตัวเองใต้รูปภาพในกรอบ login ครับ
#3

ขอรบกวนอีกครั้งครับ

จาก function submitData() ในจาวาสคริป
ผมลองเอาคอมเม๊นบรรทัดที่ 113-115
ออกแล้วลองส่ง Data ส่วนนี้ไปเพื่อแสดงผลตาม code php ดังกล่าว
มันกลับแสดงผลได้อะครับ ผมเลยเดาว่ามันจะผิดดตอนแปลงค่าตัวแปลใน
function addProduct() หรือเปล่าเพราะผมก็มือใหม่ซะด้วยทั้ง php และ javascript


หรือถ้า อ. มีฟังชั่นอะไรที่พอจะแนะนำในการ encode ด้วยจาวา และ decode ด้วย php ได้
ช่วยแนะนำด้วยน๊ะครับ


ส่วนเรื่องเปลี่ยนชื่อเมล พอผมคลิ๊กจะเปลี่ยนปรากฏว่า
ช่องที่ใส่ email ถูก Disable ไว้ เลยเปลี่ยนไม่ได้อ่ะครับ
ไม่แน่ใจว่าเป็นเพราะ ไม่ได้ ยืนยันสิทธิ์ ในเมลล์หรือเปล่า
แต่ถ้าไม่ได้เปลี่ยนจะเป็นอะไรหรือเปล่าครับ

ขอบคุณครับ

#4

โดยปกติแล้วการใช้ JSON กับ PHP และ AJAX ผมไม่มีฟังก์ชั่นอะไรเลยครับ เนื่องจาก JSON ก็คือข้อความ Text ธรรมดา ผมใช้วิธี echo ออกมาให้ได้รูปแบบที่ถูกต้องเท่านั้นครับ
#5

อ่ออออ

ขอบคุณมากครับ

ถ้าไงเด๋วลองงมๆ ดูอีกซักหน่อย

ขอบคุณมากครับสำหรับความรู้
#6
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^