我正试图将输入文本传递到ajax的值,但当我解码它时,我一直得到null
。这是我所写的。
<script>
function myAjax()
{
var username = $("#username").val();
var orderid = $("#orderid").val();
$.ajax({
type: "POST",
url: 'jumper.php',
data:{ data1:{"username": username, "orderid": orderid}},
datatype: 'json',
success:function(html)
{
document.getElementById("test").innerHTML = html;
}
});
}
</script>
<body>
<input type="text" id="username" name="username">
<input type="text" id="orderid" name="orderid">
<button id="btnkey" class="button" style="vertical-align:middle" onclick="myAjax();return false;"><span>SEARCH</span></button>
<div id="test" class="test"></div>
</body>
和解码:
$vars = (json_decode($_POST['data1']));
echo $vars;
我一直得到null
如果你想发送JSON,你必须调用JSON.stringify()
data: { data1: JSON.stringify({"username": username, "orderid": orderid}) },
但是你可以保持原样,直接使用
$username = $_POST['data1']['username'];
$orderid = $_POST['data1']['orderid'];
不清楚为什么您觉得需要data1
属性。
其他问题:
datatype: 'json'
应该是dataType: 'json'
——JavaScript是区分大小写的。
echo $vars;
应该是var_dump($vars);
,因为$vars
是数组。
这些都不会像dataType
选项所期望的那样回显JSON。
将这些数据保存在$.ajax
data:{ data1:{"username": username, "orderid": orderid}},
这样的
data:{"username": username, "orderid": orderid},
你会得到这样的post数据
$username = $_POST['username'];
$orderid = $_POST['orderid'];
这将减少代码,就像你不必处理JSON