我做错了什么?我的PHP脚本不接受myid1的值。下面是我的Javascript代码,后面是我的PHP脚本。请帮忙。
Javascript代码
function generaterepno(selectedid) {
var idnum=selectedid;
var idnum1=idnum.split(":",1);
var text='[{"myid1":idnum1}]';
var httpc = new XMLHttpRequest();
var url = "reportnumber.php";
httpc.open("POST", url, true); // sending as POST
httpc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
httpc.setRequestHeader("Content-Length", text.length);
httpc.onreadystatechange = function() {
if(httpc.readyState == 4 && httpc.status == 200) {
alert(httpc.responseText);
var myArr = JSON.parse(httpc.responseText);
}
httpc.send(text);
document.getElementById('genno').value=idnum1;
}
我的PHP如下-
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
$mynewid=$_POST["myid1"];
$mynewid=strip_tags($mynewid);
include("inc_con.php");
$myquery="SELECT MAX(report_number) AS mrepno FROM childreports WHERE child_id='$mynewid' ORDER BY report_number";
$myresult=mysql_query($myquery);
if(!$myresult) {
$outp = '[{"reportn":"0"}]';
echo ($outp);
die('records do not exist');
}
$outp = "[";
while($rm = mysql_fetch_array($myresult)) {
$outp .= '{"reportn":"'.$rm["mrepno"].'"}';
}
$outp .="]";
mysql_close($con);
echo ($outp);
?>
我是JSON和Javascript的新手。我一直试图通过阅读自学。responseText的警报消息显示一条未定义myid1的通知。此外,在我的Javascript中,HTML id genno应该从PHP代码中获得返回值,即从SQL查询中获得的最大报告数。一旦我得到了带有某个值的reportn变量,我就可以对其进行JSON解析并将其放入genno-id中,但我的问题是将myid1值正确地发送到我的PHP脚本reportnumber.PHP。
有人能帮忙吗?谢谢
在Kyle的提示和大力帮助下,我对Javascript函数进行了如下更改,我的查询出现在下面的注释部分。
function myFunction(arr) {
var tempans = arr.reportn;
var myans = 0;
if(tempans.length == 0) {
var asknum = prompt('Enter previous report number:');
myans = parseInt(asknum)+1;
} else {
myans = parseInt(tempans)+1;
}
document.getElementById('genno').value=myans;
}
为什么提示我两次用户输入?
这里有个问题。var text='[{"myid1":idnum1}]';
不是有效的JSON,因为您正试图将变量idnum1放入字符串中。将其设置在对象中,然后使用JSON.stringify()
将其转换为JSON会更容易。
var text = JSON.stringify({"myid1": idnum1});
在PHP中,您需要从请求主体对其进行解码,因为它不会在$_POST中设置。
$contents = json_decode(file_get_contents("php://input"), true);
$myNewId = $contents['myid1'];