从PHP文件中的JSON数据自动完成文本框
我有点奇怪的问题。我需要确保表单中的文本框自动填充2个JSON对象,这些对象是基于表单中另一个文本框的用户输入在PHP脚本中创建的 HTML: test.php从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 {
<?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键),并检查运行程序时是否存在任何错误。谢谢你的建议。这会引导我解决问题。如果你想了解如何操作,请参阅我的编辑。