0

我有一个表格,可以根据用户的邮政编码输入计算运费。我正在检索邮政编码的用户文本输入,通过 PHP 检索该特定邮政编码的运输成本,然后使用 AJAX 调用将其传输回 HTML 中的总输出。但是,他的 AJAX 调用并没有取代 HTML。

(相关)HTML:

  <input type="text" id="postcode" name="postcode">
  <div id="result"></div>

JS:

$(document).ready(function() {    
$('#postcode').change(function(){
    $.ajax({

        type: "GET",
        url: "shipping.php",
        data: 'shipping=' + $('#postcode').val(),
        success: function(msg){
            $('#result').html(msg);
        }

    }); // Ajax Call
});
}); //document.ready

PHP:

<?php

   $postcode = (is_numeric($_GET['postcode']) ? (int)$_GET['postcode'] : 0);

   if ($postcode >= 2000 && $postcode <= 2234) {
     $shipping = 55.00;
   } elseif ($postcode >= 2250 && $postcode <= 2310) {
     $shipping = 105.00;
   }

    echo $shipping;
?>
  • 如果我在控制台中输入 msg,它会返回 undefined。它不应该有一个值(邮政编码输入确实属于正确的条件)..?
4

3 回答 3

4

通过使用:

$postcode = (is_numeric($_POST['postcode']) ? (int)$_POST['postcode'] : 0);

和:

$.ajax{ type: "GET", ... }

您正在使用GET通过查询字符串发送后代码,但您的 PHP 代码正在尝试从POST正文中读取值。

于 2013-09-29T12:12:08.953 回答
3
$postcode = (is_numeric($_GET['postcode']) ? (int)$_GET['postcode'] : 0);

将该行更改为:

$postcode = (is_numeric($_GET['shipping']) ? (int)$_GET['shipping'] : 0);
于 2013-09-29T12:21:09.743 回答
2

您的 ajax 正在发送 GET 并且您的 PHP 正在读取 $_POST,试试这个:

<?php

   $postcode = (is_numeric($_GET['postcode']) ? (int)$_GET['postcode'] : 0);

   if ($postcode >= 2000 && $postcode <= 2234) {
     $shipping = 55.00;
   } elseif ($postcode >= 2250 && $postcode <= 2310) {
     $shipping = 105.00;
   }

    echo $shipping;
?>
于 2013-09-29T12:13:06.070 回答