0

我用我的代码创建了一个 jsfiddle - 不是 CSS 部分有 PHP 逻辑只是为了演示。

我想在 zip 字段中输入邮政编码 - 然后单击按钮后,它会查询地理编码 googlemaps 脚本并返回一个 json 对象 - 我只是在将此对象返回到表单字段时遇到问题。我可以在控制台日志中看到 json - 但是在将它传递回视图时我做错了。有任何想法吗?

http://jsfiddle.net/JxBQZ/2/

这是js文件

    $('form').on('click','#geocode',function(event) {    
    event.preventDefault();
    var zip = $('#geocode_field').val();

    $.ajax({
        type: "GET",
        url: "/test/gmaps",
        data: { zip: zip},
        dataType: "json",
        cache: true,
        success: function(data){
            console.log(data.street);
        }   
    });
});


<form>
<label>Zip</label>
<input type="text" id="geocode_field" name="zip" /><button id="geocode">Search</button>
<label>Street 1</label>
<input type="text" id="street1" name="street1" />
<label>Street 2</label>
<input type="text" id="street2" name="street2" />
<label>Town</label>
<input type="text" id="town" name="town" /> 
<label>County</label>
<input type="text" id="county" name="county" />
</form>
4

3 回答 3

1

$.ajax()用方法代替$.post()方法。然后它将更新您的视图部分。

尝试这样的事情:

$.post("/test/gmaps", { data: zip}, function(data) {
for (var key in data) {
    $('#fetchdata').html(data.street); 
   }}, "json");

这里,#fetchdata是要接收数据的id,可以是span,输入框等。在你的查询中,当你返回值时,以json_encoded格式返回。如:

function some(){
//your query
$data_to_return[] = something;
echo json_encode($data_to_return);
}

您可以在此处阅读有关该$.post()方法的更多信息

于 2013-10-01T09:19:18.893 回答
1

您应该设置 a dataTypetojson而不是jsonp,因为您调用了自己的域。jsonp 用于跨域ajax,它还需要不同的返回格式。

dataType: "json",

希望这可以帮助

于 2013-10-01T08:52:10.210 回答
0

怀疑它......为时过早。:(

    $('form').on('click','#geocode',function(event) {    
    event.preventDefault();
    var zip = $('#geocode_field').val();

    $.ajax({
        type: "GET",
        url: "/test/gmaps",
        data: { zip: zip},
        dataType: "json",
        cache: true,
        success: function(data){
            console.log(data.street);
            $('#street1').val(data.street);
        }   
    });
});
于 2013-10-01T08:58:23.360 回答