调用javascript函数,值在控制台中返回为undefined

时间:2013-08-14 21:53:22

标签: php javascript

所以我有一个由onchange填充的城市下拉列表,我试图获取它,以便每次页面重新加载时都不需要onchange,因为它是一个表单。

这是状态下拉列表,有效。

<p id=stateDiv><label>State</label></p><p><select name='States' id='States'  onchange='getCity(this.value)'>
            " . $states . "
        </select></p>";

这是城市下拉功能调用,它不起作用。我是javascript的新手,所以我不确定如何使用php格式化调用。

if($state==""){   
echo '<p id="citydiv"></p>';
}else{
    echo '<p id="citydiv"><script type="text/javascript">getCity('.$state.');</script></p>';
}

getCity函数

function getCity(stateId)
{
  var strURL="findcity.php?state="+stateId;
  var req = getXMLHTTP();
 if (req)
 {
  req.onreadystatechange = function()
  {
    if (req.readyState == 4) // only if "OK"
    {
      if (req.status == 200)
      {
        document.getElementById('citydiv').innerHTML=req.responseText;
       } else {
         alert("There was a problem while using XMLHTTP:\n" + req.statusText);
       }
    }
   }
   req.open("GET", strURL, true);
   req.send(null);
 }
}

2 个答案:

答案 0 :(得分:2)

当您遇到这样的问题时,请始终查看HTML源代码。在这种情况下,您可能会看到:

getCity(GA);

显然这是错误的,应该是"GA"

每当您将PHP变量转储到JavaScript中时,请始终使用json_encode

答案 1 :(得分:1)

与Kolink所说的一样,你的javascript函数“getCity”是什么样的?如果它只是返回一个值,这将不起作用。您将需要获取元素(document.getElementById('cityDiv'))并将innerHTML设置为返回值或使用document.write而不是返回值。