我无法使用JSON将值从javascript传递到PHP脚本

我无法使用JSON将值从javascript传递到PHP脚本,javascript,php,json,Javascript,Php,Json,我做错了什么?我的PHP脚本不接受myid1的值。下面是我的Javascript代码,后面是我的PHP脚本。请帮忙 Javascript代码 function generaterepno(selectedid) { var idnum=selectedid; var idnum1=idnum.split(":",1); var text='[{"myid1":idnum1}]'; var httpc = new XMLHttpRequest();

我做错了什么?我的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);

    ?>

为什么两次提示我输入用户信息?

这里有个问题<代码>变量文本='[{“myid1”:idnum1}]'不是有效的JSON,因为您试图将变量idnum1放入字符串中。在对象中设置它,然后使用
JSON.stringify()
将其转换为JSON会更容易

var text = JSON.stringify({"myid1": idnum1});
在PHP中,您需要从请求体对其进行解码,因为它不会在$\u POST中设置

$contents = json_decode(file_get_contents("php://input"), true);
$myNewId  = $contents['myid1'];

推送的json是什么?现在我收到通知“数组到字符串转换错误”,带有$myNewId。$myNewId现在不是带有myid1索引的$contents数组中的单个值吗?啊。我没有看到您将
idnum1
分配给javascript中的数组。您可能需要
var idnum1=idnum.split(“:”,1)[0]
var idnum1=idnum.split(“:”,1)[1]
,这取决于idnum是什么。现在我有另一个小问题!我已经从成功执行的查询中获得了值,我也可以对其进行JSON.parse。现在我想检查这个JSON.parse中的值,看看它是否为null,如果为null,我想提示用户输入以前的报告编号。如果返回值的长度为0,则提示用户输入早期报告编号,但提示用户两次!!!不知道为什么。需要帮助。老实说,我会删除您在php中手动构建json字符串的整个部分。只需创建数组并对其调用
json\u encode()
。无需手工制作json。:)谢谢!!我会记住的!你的回答真的很有用!
$contents = json_decode(file_get_contents("php://input"), true);
$myNewId  = $contents['myid1'];