この件に関する多くの投稿を見て、いくつかの解決策を試しましたが、うまくいかないようです。
最後の試行
function checkzip(x){
$.ajax({
type:'POST',
url:'zipcheck.php',
data:{zip: x},
async: false
}).done(function(r){
rates(r);
});
}
function rates(r){
alert (r);
if (r !== 'none'){
m = JSON.parse(r);
return m;
}
else {
return false;
}
}
返されるjsonは{"rateA":"125","rateB":"80","rateC":"150","rateD":"130"}です
だから私はできるようにしたい:
new_rate = checkzip('77090');
と
alert (new_rate.rateA);
しかし、戻り値が未定義になっています
成功した関数を渡そうとしました: AND .done(), async: false を設定しているときに、別の関数にも渡すのではなく、両方から直接返そうとしました。zipcheck() 関数内の関数内で ajax 呼び出しを配置し、そこからも呼び出してみました。ajax からオブジェクトを作成したり、非同期関数を操作したりする際に、何かが欠けています。