0

郵便番号または空港を検索すると、次のように結果の配列がテキスト ボックスに表示される関数があります (これがどのように機能するかです)。

ここに画像の説明を入力

これは、アドレス検索に「ランダム」なものを配置するまでは正常に機能し、検索リストに結果がなくても、何らかの理由でドロップダウン メニューに入力されます (以下を参照)。

ここに画像の説明を入力

上記の検索から、firebug コンソールで次の応答が得られます。

No results found, please try a different post code.)

および次の XML 応答:

XML Parsing Error: syntax error Location: moz-nullprincipal:{90e67c6c-c3a7-497c-a4df-6045472afde6} Line Number 1, Column 1:

No results found, please try a different post code.

以下にコードを示します。

public static function getAddressByPostcode($postcode) {

    $addressArray = array();

    $uri = 'http://[ipaddress]:[port]/?pc='.$postcode; // Send to Computer

    $response = CurlController::request($uri);

    if ($response != false) {

        // Clean html
        $response = strip_tags($response);

        $deserializedAddressArray = unserialize($response); 

        // Get result set count
        self::set_resultcount(count($deserializedAddressArray));

        if (self::get_resultcount() > 0) {

            foreach ($deserializedAddressArray as $address) {

                if(!isset($address['company']) || $address['company'] == '') {
                    $address['company'] = '';
                    $addr_cat = 1;
                } else {
                    $addr_cat = 2;
                }

                if(!isset($address['no'])) $address['no'] = '';
                if(!isset($address['street'])) $address['street'] = '';
                if(!isset($address['locality'])) $address['locality'] = '';
                if(!isset($address['town'])) $address['town'] = '';
                if(!isset($address['postcode'])) $address['postcode'] = '';

                if(!isset($address['Longitude'])) {
                    $address['Longitude'] = '';
                } else {
                    $address['Longitude'] = ($address['Longitude'] / 1000) / 3600;
                }

                if(!isset($address['Latitude'])) {
                    $address['Latitude'] = '';
                } else {
                    $address['Latitude'] = ($address['Latitude'] / 1000) / 3600;
                }



                $addressObject = new Address($addr_cat,$address['company'],$address['no'],$address['street'],
                                             $address['locality'],$address['town'],$address['postcode'],
                                             $address['Latitude'],$address['Longitude']);

                ## Swapped lat and long around as field spec on response is wrong

                ## TODO - Add validation for address object

                // Add address into addresses array
                array_push($addressArray,$addressObject);

            }

            self::getAddressesAsXML($addressArray);

        } else {

            self::$text_response .= "No results found, please try a different post code. \r\n";
            echo self::$text_response;

        }

    } else {

        self::$text_response .= "Address server is taking too long to respond, please try again later. \r\n";
        echo self::$text_response;

    }

}

誰かがこれで私を助けることができれば、それは大歓迎です。空の配列に値が入力され、代わりにエラー警告メッセージが表示されない理由がわかりません。

4

1 に答える 1

0

結果があるかどうかを確認します: if (self::get_resultcount() > 0) { } そして、その IF ステートメントを閉じると、 self::getAddressesAsXML($addressArray);

結果がない場合は、xml 配列が機能していないと思います。おそらく、IF ステートメントに追加する必要があります。

これが機能するかどうかはわかりません!試す価値がある

于 2012-11-08T12:51:45.337 に答える