我有5个输入字段,每周一天。它们会在keyup
上保存到变量中,该变量根据console.log
工作。
<script>
$(document).ready(function(){
console.log("Ready!");
$("input[type='text']").keyup(function() {
console.log("Something changed");
var mon = $("#mon").val();
var tue = $("#tue").val();
var wed = $("#wed").val();
var thu = $("#thu").val();
var fri = $("#fri").val();
console.log("Monday means:" + mon);
$.ajax({
type: "post",
url: "map.php",
data: 'mon=' + mon + '&tue=' + tue + '&wed=' + wed + '&thu=' + thu + '&fri=' + fri,
dataType: 'json',
success: function(data){
console.log("Your data is:" + data);
},
});
});
});
</script>
然而,我没有返回“不工作”或我实际上正在追求的东西。如果php文件中的API调用失败,那么不应该返回“Not working”吗?
// This is not returning anything
if($_POST['mon']) {
$mon = $_POST['mon'];
// Working fine manually entered into the web browser
$urlMon = "https://maps.googleapis.com/maps/api/geocode/json?address=".$mon."&key=myKey123";
$jsonMon = json_decode(file_get_contents($urlMon), true);
$address = $jsonMon['results']['formatted_address'];
if(isset($address)) {
echo json_encode($address);
} else {
echo json_encode("Not working");
}
}
我知道ajax本身正在工作,因为这是有效的:
// This returns the variable I sent according to the console log.
if($_POST['mon']) {
$mon = $_POST['mon'];
echo json_encode($mon);
}
我对此非常陌生,我确信我已经错过了一些明显/做错的事情。
提前致谢
答案 0 :(得分:1)
你没有在console.log()
调用中看到任何内容的原因是因为你明确告诉jQuery期望得到json结果。而且,即使您在错误文本上调用json_encode()
,它仍然只是纯文本,jQuery不能解释为json。既然你告诉它期待json并且它没有得到它,那么success
回调就不会发生。删除dataType: 'json',
除非你知道你将总是获得json响应或b。)也有错误回调。
我们遇到错误情况的原因是因为$jsonMon['results']['formatted_address']
应该是$jsonMon['results'][0]['formatted_address']
。您还需要对要发送到maps API的地址进行urlencode。
答案 1 :(得分:0)
我看到两个错误:
$address = $jsonMon['results']['formatted_address'];
应该是
$address = $jsonMon['results'][0]['formatted_address'];
收到第一个结果。
其次,改变
} else {
echo json_encode("Not working");
}
到
} else {
echo "Not working";
}
你应该好。
答案 2 :(得分:-2)
你必须这样写
$urlMon= file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=".$mon."&key=myKey123");
$results = json_decode($urlMon,true);
echo $results['results'][0]['formatted_address'];