将javascript值传递给php并返回

时间:2014-05-30 20:19:01

标签: javascript php ajax parameter-passing

将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 />

1 个答案:

答案 0 :(得分:0)

dataType: "html",更改为dataType: "json",$resultsarray,因此您需要使用index

试试这个:

function complete() {
    var postalCode = document.getElementsByName("postalCode")[0].value;
    if (postalCode.length === 6) {
        var dataString = "postalCode=" + postalCode;
        $.ajax({
            type: "POST",
            url: "getAddress.php",
            dataType: "json",
            data: dataString,
            success: function(results) {
                document.getElementById("street").value = results[0].street;
                document.getElementById("city").value = results[0].city;
            }
        });
    }
}

当您收到500内部服务器错误消息时,其中一个原因可能是那个 $con->query($sql)失败,请确保$con已初始化且tablefield名称正确无误。