4

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 调用的成功函数中。null如果 pin 不相等,控制台日志报告为值faf9,如果我输入正确的 pin,则没有日志。

我似乎无法弄清楚我要去哪里错了?

4

5 回答 5

8

将数据类型更改为:

dataType: 'HTML',

就这些 :)

于 2012-05-23T07:30:38.730 回答
2

你的 php 返回一个字符串,但你期待一个JSON对象。更改$.ajax函数内的数据类型属性

于 2012-05-23T07:30:49.667 回答
2

对于dataType: "json",您必须返回 json 对象。如果没有,请用适当的喜欢dataType: "html"dataType: "text"

$site此外,如果您不想要 null 返回值,则需要进行初始化。

于 2012-05-23T07:32:16.657 回答
2

进行如下修改:

  • 替换var PIN = $("this").val();var PIN = $(this).val();

  • 替换var dataString = "PIN=" + PIN;var dataString = PIN;

  • 替换dataType: "json",dataType: "html",

于 2012-05-23T07:36:53.860 回答
1

这个 m8 与您的确切问题无关,但我认为您应该 $(this) 不带引号使用

于 2012-05-23T07:32:12.673 回答