0

都市、州、郵便番号、緯度、経度、郡を含む既存の DB があります: 40,000 以上のレコード。

問題なく使用できております。

私が今やろうとしているのは、ユーザーがフォームに郵便番号を入力し、DB にクエリを実行して、関連する都市、州、緯度、経度、および郡を取得することです。

スクリプトは「ONBLUR」を実行しますが、何も起こりません。を挿入したので、関数を正しく呼び出していることを確認しましたwindow.alert("Test")

これがJavaScriptです:

function updateCityState()
   {
   {
    var zipValue = document.getElementById('zipcode').value;
    if(zipValue!="")
    {
        var url = "admin/includes/zip_check.php";
        var param = "?zip=" + escape(zipValue);

        var ajax = getHTTPObject();

        ajax.open("GET", url + param, true);
        ajax.onreadystatechange = handleAjax;
        ajax.send(null);
    }
}
}
 function handleAjax()
{
if (ajax.readyState == 4)
{
    citystatearr = ajax.responseText.split(",");

    var city = document.getElementById('city');
    var state = document.getElementById('state');

    city.value = citystatearr[0];
    state.value = citystatearr[1];
}
 }

私の「zip_check.php」ファイルは次のようになります....zip_checkは、手動でクエリすると機能します...

include_once("../db.php");
$query = "SELECT * FROM `cities_extended` WHERE `zip`=".mysql_real_escape_string($_GET['zip']);
$result = mysql_query($query) or die(mysql_error());


$row = mysql_fetch_array($result);
echo $row['city'].",".$row['state_code'];

これを機能させるには、JQuery などの不足しているものを含める必要がありますか? 私の構文は正しいですか?

4

4 に答える 4

2

@elclanrs が言ったように、 . に冗長な { がありfunction updateCityState()ます。次に、サーバー側から送り返すデータ型は何ですか? json、xml、text、または html など、この情報は非常に重要であり、慎重に扱う必要があります。jQuery などのライブラリを介して使用する代わりに AJAX 方法論を実装することにより、応答データ型を正しく定義し、応答ステータスを処理し、複数のブラウザーと互換性があることを確認する必要があります。以下のスニペット コードは一例です。

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

この方法でのデバッグは簡単ではありません。この実装を維持したい場合は、こちらを参照してください。個人的には、jQuery を使用してビジネスを行うことをお勧めします。

于 2013-04-05T03:50:38.250 に答える
1

すべての面倒な作業を行う jQuery.ajax 関数の使用を検討してください! 公式の API ドキュメントを参照してください: http://api.jquery.com/jQuery.ajax/。jQuery コードは次のようになります。

function updateCityState()
{
    var zipValue = $('#zipcode').val();
    if(zipValue == "")
    {
        alert('enter a zip value!');
    }
    else
    {
        //process ajax request
        var zipcodeRequest = $.ajax({
             type: "GET",
             url: "admin/includes/zip_check.php",
             data: { zip:zipValue }
        });

        zipcodeRequest.done(function(data)
        {
             alert( "You have successfully found your zip code." + data );
             //do something with your data here...
             $('#city').val(data.city);
             $('#state').val(data.state);
        });

        zipcodeRequest.fail(function(jqXHR, textStatus)
        {
             alert( "We could not find your zip code (" + textStatus + ")." );
        });
    }
}

これを理解するのに役立つ、いくつかの ajax コードの例を次に示します。

  1. http://www.jquery4u.com/demos/ajax/
  2. http://www.jquery4u.com/function-demos/ajax/
于 2013-04-05T03:46:03.393 に答える
0

jquery を使用したくない場合は、これを使用してみてください。単純な ajax ですが、実装はあなたのものとは異なります。

function updateCityState()
{
var xmlhttp;
var zipValue = document.getElementById('zipcode').value;  
if (zipValue=="")
  {
    var city = document.getElementById('city');
    var state = document.getElementById('state');

    city.value = "";
    state.value = "";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    citystatearr = xmlhttp.responseText.split(",");

    var city = document.getElementById('city');
    var state = document.getElementById('state');

    city.value = citystatearr[0];
    state.value = citystatearr[1];
    }
  }

xmlhttp.open("GET","admin/includes/zip_check.php?zip="+zipValue,true);
xmlhttp.send();
}
于 2013-04-05T04:31:34.703 に答える