我正在尝试根据存储的(数组)值“填充”表单中的选择:city_selector_vars。这个存储的值显示了正确的值(见下面的代码)。
我遍历这个数组并尝试获取已定义 stateCode 的城市 (get_states)。我将 stateCode 作为值传递给函数。
如果我在获得预期回报state_data.country_code之前登录。$.post如果我登录state_data.country_code进去$.post,它并不总是与传递的 country_code 相同。我认为这与范围有关,但我的知识不足以弄清楚。
/**
* city_selector_vars
* [
* 'countryCode' => 'NL',
* 'stateCode' => 'NL-FL',
* 'cityName' => 'A name'
* ]
* [
* 'countryCode' => 'BE',
* 'stateCode' => 'BE-BR',
* 'cityName' => 'Another name'
* ]
*/
if ( true === Array.isArray(city_selector_vars) ) {
for (i = 0; i < city_selector_vars.length; i++ ) {
get_states(city_selector_vars[i].countryCode, (response)=> {
// console.log(response);
});
}
}
function get_states(countryCode, callback) {
const state_data = {
action: 'get_states_call',
country_code: countryCode
};
// console.log(state_data.country_code) shows correct country code
$.post(ajaxurl, state_data, (response)=> {
// here the wrong response first shows
// state_data.country_code is not always the same as state_data.country_code
callback(response);
});
}
function get_states_call( $country_code = false ) {
// $country_code = always false, even though it is passed
if ( false == $country_code ) {
if ( isset( $_POST[ 'country_code' ] ) ) {
// here it sometimes picks up the incorrect value
$country_code = $_POST[ 'country_code' ];
}
}
// code removed, since depends on code above
$items = [];
echo json_encode( $items );
die();
}
因为它只是有时会拾取错误的值,所以我认为它与范围有关,但我没有足够的知识来确定它。
慕容森
SMILET
相关分类