从 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的主要内容,如果未能解决你的问题,请参考以下文章

mybatis一个字段传2个值及日期yyyy-mm-dd比较

以角度 8 将文本字段的值从一个组件传递到另一个组件

将值从一个 DataGridView 复制到另一个

将许多参数传递给控制器​​的好方法是啥?

Java:如何将值从javascript设置为wicket组件文本字段

将值从选择器视图设置为文本字段,而无需以编程方式全局快速声明 uitextfield