使用來自API的值觸發變更。
P粉633309801
P粉633309801 2023-07-30 15:33:31
0
1
352

我正在處理一個項目,在這個項目中,我需要獲取當前的坐標,並將它們保存為變量,然後將這些參數發送到GeoNames,以獲取國家代碼。這個國家代碼將用於觸發一個更改事件,作用於一個下拉式選單(之前已經填充了國家代碼作為值),該下拉式選單將顯示一個國家的邊界(使用geoJSON)。如果我實際上在選單上點擊任何一個國家,它都可以正常工作,但是當我從GeoNames獲取到程式碼後,我無法觸發更改事件。每當我在獲取到國家代碼後添加這行代碼時,問題就出現了。

$('#countrySelect').val('currCode').change();

除了不起作用之外,我還收到了這個錯誤:Map.js:291 Uncaught Error: Bounds are not valid.

有人知道我做錯了什麼嗎? (我正在使用php進行解碼,並且我從leaflet獲取地圖)。

以下是詳細資料:

這個程式碼用來填滿下拉式選單:


;
$.ajax({ url: "libs/php/geoJson.php", type: "POST", dataType: "json", success: function(result) { //console.log(result); for (var i=0; i', { value: result.data.border.features[i].properties.iso_a3, text: result.data.border.features[i].properties.name, })); } } });

當手動選擇國家時,這將創建邊界(並且它可以正常工作)。

var border; $('#countrySelect').on("change", function() { let name = $('#countrySelect').val(); //get show border $.ajax({ url: "libs/php/geoJson.php", type: 'POST', dataType: 'json', success: function(result) { const filterData = result.data.border.features.filter((a) => (a.properties.iso_a3 === name)); border = L.geoJSON(filterData[0]).addTo(map); map.fitBounds(border.getBounds()); }, }); });

這部分程式碼嘗試獲取座標(似乎可以正常工作),將它們傳遞給GeoNames以獲取國家代碼(似乎也可以正常工作),然後觸發上述的更改事件(但這部分不起作用)。

navigator.geolocation.getCurrentPosition(成功); 函數成功(位置){ 讓 lat = 位置.座標.緯度; 令 lng = 位置.座標.經度; 讓 coords = {"lat": lat, "lng": lng}; //帶有座標的AJAX請求到geoNames以取得國家/地區代碼 $.ajax({ url: "libs/php/getCurrentCode.php", 類型:“帖子”, 資料類型:“json”, 數據:座標, 成功:函數(結果){ console.log(JSON.stringify(結果)); if (result.status.name == "ok") { $(結果["數據"]["國家代碼"]); 讓 currCode = 結果.data; 控制台.log(currCode); //用檢索到的程式碼觸發更改 $('#countrySelect').val('currCode').change(); }; }; }); };

我的 php:

ini_set('display_errors', 'On'); 錯誤報告(E_ALL); $executionStartTime = microtime(true); $url='http://api.geonames.org/countryCodeJSON?&lat=' 。 $_REQUEST['緯度'] 。 '&lng=' 。 $_REQUEST['lng'] 。 '&用戶名=&樣式=完整'; $ch=curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL,$url); $結果=curl_exec($ch); 捲曲_關閉($ch); $decode = json_decode($結果,true); $輸出['狀態']['代碼'] = '200'; $output['status']['name'] = 'ok'; $output['狀態']['描述'] = '成功'; $output['status']['returnedIn'] = intval((microtime(true) - $executionStartTime) * 1000) 。 ' 多發性硬化症'; $output['data'] = $decode['countryCode']; //var_dump($解碼); header('內容類型:application/json; charset=UTF-8'); echo json_encode($output);


>

P粉633309801
P粉633309801

全部回覆 (1)
P粉010967136
$('#countrySelect').val('currCode').change();

這將把值設為字面字串currCode。您要將其設定為變數currCode中的值。為了做到這一點,請刪除引號:

$('#countrySelect').val(currCode).change();
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!