【发布时间】:2014-04-01 19:12:45
【问题描述】:
我有一个古怪的问题。我需要确保表单中的文本框自动填充 2 个 JSON 对象,这些对象是根据表单中另一个文本框的用户输入在 PHP 脚本中创建的。
HTML:
<p>Number: <input type="text" name="numbox" id="numbox" maxlength="10"></p>
<p>First Name: <input type="text" id="firstnamebox" maxlength="20" name="firstnamebox"></p>
<p>Last Name: <input type="text" id="lastnamebox" maxlength="20" name="lastnamebox"></p>
jQuery:
$(document).ready(function () {
$("#numbox").keyup(function () {
var el = $(this);
if (el.val().length === 10) {
$.ajax({
url: "http://localhost/test.php",
dataType: "json",
type: "POST",
data: {el.val()},
success: function (result) {
$("#firstnamebox").val(result.firstname);
$("#lastnamebox").val(result.lastname);
}
});
}
});
});
test.php
<?php
$num=$_POST["numbox"];
if ($num="0123456789")
{
$fill = array('firstname' => "John", 'lastname' => "Smith",);
echo json_encode($fill);
}
else
{
echo "Bad input.";
}
?>
JSON 字符串在我的服务器上工作,所以我不认为我的 PHP 不好。逻辑应该是用户在第一个文本框中输入 0123456789 后,其他两个分别填充 John 和 Smith。自动完成功能根本不起作用(可能是由于我的 jQuery/AJAX 代码),所以如果您能在解决此问题方面提供任何帮助,我将不胜感激。
编辑: 我通过错误控制台发现我的 jQuery 无法连接到我的本地主机。我通过允许跨域通信解决了这个问题。不得不添加
header("Access-Control-Allow-Origin: *");
到我的 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);
}
});
}
});
});
我很高兴它有效。感谢任何帮助过我的人。
【问题讨论】:
-
您的 ajax 代码中有语法错误。
-
@RenéRoth jsfiddle 据我所知不适用于 PHP?
-
@Musa 介意扩展一下吗?
标签: php jquery ajax json forms