“xmlResult.Result未定义”错误

时间:2012-01-25 11:07:18

标签: php javascript ajax jquery

我制作了一个简单的php脚本,它使用ajax通过邮政编码获取城市名称 我的java代码是

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://jquery-xml2json-plugin.googlecode.com/svn/trunk/jquery.xml2json.js"></script>
        <script type="text/javascript">
        $(document).ready(function(){
            var initialPostal;
            $('#postal').bind('keyup change',function(e) {
            if(($("#postal").val().length==3 || $("#postal").val().length==6 || $("#postal").val().length==7) && $("#postal").val()!=initialPostal)
                { 
                              initialPostal=$("#postal").val();
                        $.get('citylookup.php?postal='+$("#postal").val(), function(xml){
                        var xmlResult = $.xml2json(xml);
                            $("#city").val(xmlResult.Result.City);
                            alert(xmlResult.Result.City);
                        }); } });   });  </script>

//这是我的HTML代码

<form id="form1" name="form1" method="post" action="">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Postal:</td>
      <td><input type="text" name="postal" id="postal" /></td>
    </tr>
    <tr>
      <td>City:</td>
      <td><input type="text" name="city" id="city" /></td>
    </tr>
  </table>

我的citylookup.php页面代码已经听到了

<?php
$url = 'http://where.yahooapis.com/geocode?q='.$_GET['postal'].'&country=india';
$xml = simplexml_load_file($url);

foreach($xml as $result)
{
    if($result->postal==$_GET['postal'])
    {
    $City = $result->city;
    }

}
echo $City;
?>

它给我一个像

这样的错误
Error: xmlResult.Result is undefined
Source File: http://localhost/postalcode/citylookup.html
Line: 17

任何解决方案?

1 个答案:

答案 0 :(得分:0)

您的第一个问题是$City变量未在foreach块之前声明 - 因此您将在那里收到错误...

<br /> <b>Notice</b>:  
Undefined variable: City in <b>citylookup.php</b> on line <b>14</b><br />

尝试:

<?php
$url = 'http://where.yahooapis.com/geocode?q='.$_GET['postal'].'&country=india';
$xml = simplexml_load_file($url);

$City = "";
foreach($xml as $result)
{
    if($result->postal==$_GET['postal'])
    {
    $City = $result->city;
    }

}
echo $City;
?>

你的第二个问题是你的JavaScript中没有错误检查 - 即如果你输入一个未知的邮件,你会看到相同的错误 - 考虑检查返回值以确保实际返回有价值的东西。实际上你只是使用上面的PHP返回一个单词...而不是XML / JSON