我无法使用JSON将值从javascript传递给PHP脚本
I am unable to pass on the value to a PHP script from a javascript using 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();
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'];
相关文章:
- 为什么我的javascript脚本在页面加载时运行,而不是使用onclick
- 如何知道是否加载了JavaScript(脚本)
- onclick'放在JavaScript脚本中时无法工作
- 直接导航到chrome中的页面时未加载Javascript脚本
- 我将如何在将数据发布到 php 脚本的 javascript 脚本中输入变量
- Javascript 和 AngularJS2.为什么 JavaScript 脚本过早触发并假设不起作用
- jquery和JavaScript脚本不起作用
- 两个javascript脚本的非独立性
- 从另一个Javascript脚本(Canvas3D)更新QML属性
- 仅当存在某些HTML元素时才运行多个Javascript脚本
- 只有在条件满足时才加载javascript脚本-不起作用
- 在没有JQuery的情况下加载HTML主体之后调用JavaScript脚本的最佳方式
- 如何将PHP截图插入Javascript脚本
- 如何在javascript脚本标记中使用剃刀for循环
- 有没有办法同时加载JavaScript脚本
- 使用 Angularjs 加载 JavaScript 脚本的最佳方法是什么?
- 进入页面时未知的javascript脚本向下滚动
- Java 脚本中的 JavaScript 脚本中的绑定方法调用
- 克隆整个 JavaScript 脚本引擎
- 将 PHP 变量发送到 JavaScript.<脚本>标记的位置