将 PHP 变量传递回 jQuery $.ajax 函数
Posted
技术标签:
【中文标题】将 PHP 变量传递回 jQuery $.ajax 函数【英文标题】:Pass PHP variable back to jQuery $.ajax function 【发布时间】:2012-05-29 17:29:05 【问题描述】:1. HTML
我有一个输入要求用户输入他们的 PIN 码:
<input type="text" name="pin" maxlength="4" id="pin" />
2。 javascript
当用户输入 4 个字符时,jQuery 函数会触发一个 ajax 调用来处理 php 文件中的 PIN 并返回相应的站点名称:
$("input#pin").keyup(function()
var PIN = $("this").val();
if (PIN.length == 4)
var dataString = "PIN=" + PIN;
$.ajax(
type: "POST",
url: "pins.php",
dataType: "json",
data: dataString,
cache: false,
success: function(site)
console.log("site name is:" + site);
);
);
3. PHP
pins.php
包含以下代码:
<?php
$pin = $_POST["PIN"];
if ($pin == "faf9")
$site = "pgv";
echo $site;
?>
问题
我似乎无法将 $site
的值返回到 ajax 调用的成功函数中。如果 pin 不等于 faf9
,则控制台日志报告 null
作为值,如果我输入正确的 pin,则没有日志。
我似乎无法弄清楚我哪里出错了?
【问题讨论】:
【参考方案1】:将数据类型更改为:
dataType: 'html',
就是这样:)
【讨论】:
或者把dataString改成dataString:PIN:PIN
【参考方案2】:
您的 php 返回一个字符串,但您需要一个 JSON
对象。更改 $.ajax
函数内的数据类型属性
【讨论】:
【参考方案3】:对于dataType: "json"
,您必须返回 json 对象。
如果没有,请使用适当的类型更改该类型,例如 dataType: "html"
或 dataType: "text"
另外,如果你不想要空返回值,你需要初始化$site
。
【讨论】:
初始化$site
-- 你能详细说明一下吗?
@muppethead 如果它是 json $site='';
。如果是 html/文本$site='';
。在if
语法之前写下一行。【参考方案4】:
进行如下修改:
将var PIN = $("this").val();
替换为var PIN = $(this).val();
将var dataString = "PIN=" + PIN;
替换为var dataString = PIN;
将dataType: "json",
替换为dataType: "html",
【讨论】:
我很好奇你为什么改变主意:Replace var dataString = "PIN=" + PIN; with var dataString = PIN;
我假设您正在使用$.post()
方法,在该方法中您应该将变量作为pin: PIN
传递并在服务器端将其用作$_GET['pin']
。但是您使用的是$.ajax()
,我最近认识到因此进行了更改! ;)【参考方案5】:
这 m8 与您的确切问题无关,但我认为您应该使用
$(this)
不加引号
【讨论】:
好收获。我的代码中有$(this)
。不知道为什么我在这里添加引号。以上是关于将 PHP 变量传递回 jQuery $.ajax 函数的主要内容,如果未能解决你的问题,请参考以下文章