【发布时间】:2014-05-30 20:19:01
【问题描述】:
我在将 javascript 值传递给 php 并返回时遇到了一些问题。
我的想法是,我有一个表单,用户填写邮政编码,然后 (onBlur) 在两个不同的输入字段中显示正确的街道和城市。街道和城市是通过 POST 方法从外部 php 文件 (getAddress.php) 收集的。
我知道 php 脚本返回了正确的值并且 complete() 函数被称为 onBlur,但我不知道该值是否被传递到 php 脚本并返回。
Javascript
<script language="javascript">
function complete() {
var postalCode = document.getElementsByName("postalCode")[0].value;
if(postalCode.length === 6) {
var dataString = "postalCode=" + postalCode;
$.ajax({
type: "POST",
url: "getAddress.php",
dataType: "html",
data: dataString,
success: function(results) {
var json = JSON.parse(results);
document.getElementById("street").value = json.street;
document.getElementById("city").value = json.city;
}
});
}
}
</script>
getAddress.php
<?php
$postalCode = $_POST['postalCode'];
$postalCode = substr_replace($postalCode, ' ', 4, 0);
$sql = 'SELECT * FROM postalCodes WHERE postalCode="'.$postalCode.'"';
$res = $con->query($sql);
$res->data_seek(0);
while($row = $res->fetch_assoc()) {
$ID = $row['ID'];
$street = $row['street'];
$city = $row['city'];
$results[] = array('ID' => $ID, 'street' => $street, 'city' => $city);
}
echo json_encode($results);
?>
HTML
<input name="postalCode" type="text" maxlength="6" onBlur="complete()" /><br />
<input name="street" id="street" type="text" disabled /><br />
<input name="number" type="text" maxlength="6" /><br />
<input name="city" id="city" type="text" disabled /><br />
【问题讨论】:
-
您将参数称为“成功”函数“结果”,但随后在对
JSON.parse()的调用中将其称为“数据”。 -
@Pointy 很抱歉,但这仍然不能解决问题。
-
请定义您的问题。
-
您的查询中存在 SQL 注入问题:您应该转义 postalCode...
-
我会检查你的浏览器控制台,大多数人都有一个“网络”选项卡,可以让你检查所有 http 请求、响应、POST 值、标头等。你可以在那里查看你的正在发送/接收值。
标签: javascript php ajax parameter-passing