如何将此javascript的结果转换为php变量?

时间:2013-09-01 12:49:42

标签: php location

有一段漂亮的代码可让用户开始输入地名,然后在您输入时提供建议的位置。

单击所需位置,然后将位置名称放入div框中。如何将所选值作为变量$ location?

 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<style>
.ui-autocomplete-loading {
background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
}
#city { width: 25em; }
</style>

<script>
$(function () {
    function log(message) {
        $("<div>").text(message).prependTo("#log");
        $("#log").scrollTop(0);
    }
    $("#city").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "http://ws.geonames.org/searchJSON",
                dataType: "jsonp",
                data: {
                    featureClass: "P",
                    style: "full",
                    maxRows: 12,
                    name_startsWith: request.term
                },
                success: function (data) {
                    response($.map(data.geonames, function (item) {
                        return {
                            label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                            value: item.name
                        }
                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            log(ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    });
});
</script>

Div的:

<div class="ui-widget">
<label for="city">Your city: </label>
<input id="city" />
<div class="ui-widget" style="margin-top: 2em; font-family: Arial;">
Result:
<div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>

1 个答案:

答案 0 :(得分:0)

如果您想使用这段漂亮的代码填写表单,用户可以提交哪些内容以及php可以在服务器端使用,那么您必须将其作为表单并为城市字段指定一个合适的名称:

<form method="post">

<div class="ui-widget">
<label for="city">Your city: </label>
<input id="city" name="city" />
<div class="ui-widget" style="margin-top: 2em; font-family: Arial;">
Result:
<div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>

<input type="submit" value="ok" />

</form>

<?php
if (!empty($_POST['city'])){
    print('<div>Latest submitted city was: '.$_POST['city'].'</div>');
}
?>

将修改后的内容(连同javascript)放入.php文件中,并将浏览器指向此内容。

修改

替代方法是使用cookie:)

成功之前()在代码中返回设置cookie:

success: function (data) {
    response($.map(data.geonames, function (item) {
        document.cookie = 'location=' + encodeURIComponent(item.name) + '; path=/';
        return {
            label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
            value: item.name
        }
    }));
}

在PHP中,您可以将其读作:

$location = $_COOKIE['location'];
print($location);