从 2 个不同的文本字段将 2 个值从 php 传递到 ajax

Posted

技术标签:

【中文标题】从 2 个不同的文本字段将 2 个值从 php 传递到 ajax【英文标题】:passing 2 values from php to ajax from 2 different text field 【发布时间】:2021-10-26 18:37:53 【问题描述】:

我正在尝试将值从输入文本传递到 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

【问题讨论】:

这不是您通过$_POST 变量收到的JSON,您需要为AJAX 调用返回JSON。试着先看看你在$_POST 中得到了什么。 尝试调试你在$_POST['data1'] 得到的东西做echo $_POST['data1'];print_r($_POST['data1']); 然后决定你想做什么,如果你在POST 中没有得到任何东西那么你可能会改变你的Ajax 请求代码。 【参考方案1】:

如果你想发送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。

【讨论】:

【参考方案2】:

只需将这些数据保存在 $.ajax 中

data: data1:"username": username, "orderid": orderid,

喜欢这个

data:"username": username, "orderid": orderid,

你会得到这样的帖子数据

$username = $_POST['username'];
$orderid = $_POST['orderid'];

这将减少代码,就像您不必处理 JSON 一样

【讨论】:

以上是关于从 2 个不同的文本字段将 2 个值从 php 传递到 ajax的主要内容,如果未能解决你的问题,请参考以下文章