Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP文件中的JSON数据自动完成文本框_Php_Jquery_Ajax_Json_Forms - Fatal编程技术网

从PHP文件中的JSON数据自动完成文本框

从PHP文件中的JSON数据自动完成文本框,php,jquery,ajax,json,forms,Php,Jquery,Ajax,Json,Forms,我有点奇怪的问题。我需要确保表单中的文本框自动填充2个JSON对象,这些对象是基于表单中另一个文本框的用户输入在PHP脚本中创建的 HTML: test.php <?php $num=$_POST["numbox"]; if ($num="0123456789") { $fill = array('firstname' => "John", 'lastname' => "Smith",); echo json_encode($fill); } else {

我有点奇怪的问题。我需要确保表单中的文本框自动填充2个JSON对象,这些对象是基于表单中另一个文本框的用户输入在PHP脚本中创建的

HTML:

test.php

<?php

$num=$_POST["numbox"];

if ($num="0123456789")
{
    $fill = array('firstname' => "John", 'lastname' => "Smith",);
    echo json_encode($fill);
}
else
{
    echo "Bad input.";
}

?>
到我的PHP脚本的顶部,以允许连接。也可以从服务器控制面板更改它。下一个问题是由于我的jQuery代码。一位经验丰富得多的开发人员建议对代码进行一些更改,现在看起来是这样的:

$(function () {
$("#numbox").keyup(function () {
var el = $(this);

    if (el.val().length === 10) {
        $.ajax({
            url: "http://localhost/test.php",
            dataType: "json",
            type: "POST",
            data: "numbox="+el.val(),
            success: function (result, success) {
                $("#firstnamebox").val(result.firstname);
                $("#lastnamebox").val(result.lastname);
            }
        });
    }
});
});

我很高兴它能起作用。感谢所有帮助过我的人。

尝试使用
$.getJSON()
而不是
$.ajax()
,或者在尝试访问它之前使用
$.parseJSON(结果)

尝试使用
$.getJSON()
而不是
$.ajax()
,或者使用
$.parseJSON(结果)
在尝试访问它之前。

在ajax调用中输入的数据应该是:

data: {'numbox':el.val()}

ajax调用中的数据输入应为:

data: {'numbox':el.val()}

试试这个,效果很好,我已经在我的系统中测试过了

$(function () {
$("#numbox").keyup(function () {
    var el = $(this);

   if (el.val().length === 10) {

        $.ajax({
            url: "test.php",
            dataType: "json",
            type: "POST",
            data: {'numbox':el.val()},
            success: function (result) {

                //try to put alert(result); to see what response you've got

                response = jQuery.parseJSON(result);
                $("#firstnamebox").val(response.firstname);
                $("#lastnamebox").val(response.lastname);
            }
            error: function(error) {
            alert(error);
            }
            });
        }
    });
});
在test.php中

$num=(!empty($_POST["numbox"]))?$_POST["numbox"]:die('NUM is empty');

if ($num=="0123456789")//double equal to
{
    $fill = array('firstname' => "John", 'lastname' => "Smith",);
    echo json_encode($fill);
}
else
{
    echo "Bad input.";
}

试试这个,效果很好,我已经在我的系统中测试过了

$(function () {
$("#numbox").keyup(function () {
    var el = $(this);

   if (el.val().length === 10) {

        $.ajax({
            url: "test.php",
            dataType: "json",
            type: "POST",
            data: {'numbox':el.val()},
            success: function (result) {

                //try to put alert(result); to see what response you've got

                response = jQuery.parseJSON(result);
                $("#firstnamebox").val(response.firstname);
                $("#lastnamebox").val(response.lastname);
            }
            error: function(error) {
            alert(error);
            }
            });
        }
    });
});
在test.php中

$num=(!empty($_POST["numbox"]))?$_POST["numbox"]:die('NUM is empty');

if ($num=="0123456789")//double equal to
{
    $fill = array('firstname' => "John", 'lastname' => "Smith",);
    echo json_encode($fill);
}
else
{
    echo "Bad input.";
}


您的ajax代码中有语法错误。@RenéRoth jsfiddle据我所知不适用于PHP?@Musa mind expansion on the?您的ajax代码中有语法错误。@RenéRoth jsfiddle据我所知不适用于PHP?@Musa mind expansion on the?谢谢您的建议。我更改了它,但“自动完成”仍然无法正常工作。添加了exit();仍然不走运。您知道要将numbox值分配给$num的内容。在php中,将==添加到比较中。这一次应该行得通。我添加了它,现在当我访问.php文件时,它会提示来自else的“错误输入”,而不是JSON数据,就像使用单个操作符一样。但是,自动填充仍然不起作用:(删除if-else条件以验证代码的重要部分,即自动填充firstname和lastname。一旦能够自动填充,则添加回if条件,并检查if条件是否正确检查值,以及是否实际通过输入框传递0123456789。感谢您的建议。我更改了它,但autocomplete仍然不起作用。很遗憾,添加了exit();仍然不走运。您知道将numbox值分配给php中的比较$num.Add==的是什么。这次应该可以。我添加了它,现在当我访问.php文件时,它会提示“错误输入”从my else而不是像使用单个运算符那样使用JSON数据。尽管如此,自动填充仍然无法工作:(删除if-else条件以验证代码的重要部分,即自动填充firstname和lastname。一旦您能够自动填充,则添加回if条件,并检查if条件是否正确检查值,以及您是否实际通过输入框传递了0123456789。感谢您的回复。这是代码看起来应该可以做我需要的一切,但我一直在努力让它工作。我知道我的库加载正常,因为我还使用jQuery插件根据用户的邮政编码自动填充州和城市。我已经在我的IIS服务器上测试过多次PHP。我可以问一下其他设置吗除了代码之外,你还有其他的吗?如果它对你来说运行正常(在第一个文本框中输入0123456789,在另外两个文本框中自动获取数据),那么我不知道会出什么问题,因为我正在使用你的代码。太混乱了。请尝试启用开发工具(按F12键)并检查运行程序时是否有任何错误谢谢你的建议。这会引导我解决问题。如果你想了解如何解决问题,请参阅我的编辑。谢谢你的回复。此代码看起来应该可以完成我需要的所有操作,但我一直在竭尽全力使其正常工作。我知道我的库正在加载。我的库正常因为我也在使用jQuery插件根据用户的邮政编码自动填写州和城市。我已经在我的IIS服务器上测试了多次PHP。我可以问一下除了代码之外,您还有什么其他设置吗?如果它对您有效(在第一个文本框中输入0123456789,在其他两个文本框中自动获取数据)那么,我不知道我在使用你的代码时会出现什么问题。太困惑了。请尝试启用开发人员工具(按F12键),并检查运行程序时是否存在任何错误。谢谢你的建议。这会引导我解决问题。如果你想了解如何操作,请参阅我的编辑。