首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过ajax传递“无限制”值

通过ajax传递“无限制”值
EN

Stack Overflow用户
提问于 2015-02-03 03:48:02
回答 2查看 582关注 0票数 0

我正在尝试在我们的网站上为谷歌地图api做一个过滤器,这样人们就可以选择只显示与选中的位置相关的信息。我不确定通过ajax传递无限参数的最佳方式,因为它相对较新。通过选中相应的复选框,可以选择每个位置。下面是我尝试传递的代码。

代码语言:javascript
运行
复制
 //Example Checkbox
 <input type="checkbox" checked name="locationID1" class="locationID" value="47">

 $(".layer-button").click(function(){
        var form = $(this).parents('form:first');
        var locationID = [];
        var n = 0;
        $(".locationID", form).each(function () {
            if(this.checked){
                // part I'm having troubles with.
                locationID[n] = $(this).val();
                n++;
            }
        });

        var data = {
                "action":"addLayer",
                "map-try-ok":"1",
                // part I'm having troubles with.
                "location_id":locationID
        }


       $.ajax({
        type: "POST",
        url: "/ajax/map/map.php",
        dataType: "json",
        data: data,
        success: function(data) {
            jQuery.each( data, function( key, val ) {   
                geocoder = new google.maps.Geocoder();
                var color = $("select[name=color]", form).val();
                var address = val["address"];
                geocoder.geocode( { 'address': address}, function(results, status) {
                    if(results){
                      var marker = new google.maps.Marker({
                            map: map,
                            position: results[0].geometry.location,
                            icon: "../image/icons/map/icon_marker"+color+".png",
                            title: val["name"],
                            url: ""
                        });
                    }
                });

            });




        },
        error: function(){return false;}
    });

});

如果我像这样传递静态数字,代码就会工作得很好。

代码语言:javascript
运行
复制
        var data = {
                "action":"addLayer",
                "map-try-ok":"1",
                "location_id":"47"
        }

有没有一种通过ajax传递数组的最佳方式?我不确定是否可以在var数据的参数中运行each函数?

更新:

我将所有这些信息传递给PHP脚本。PHP向jquery返回的信息运行良好,我对实际的Google Maps API本身没有任何问题。这个问题是从jquery -> ajax -> php传递x变量。

我尝试使用以下代码调用location_id,但它完全传递了代码块,这让我相信传递数组是不起作用的。

代码语言:javascript
运行
复制
     if(is_array($_POST['location_id'])){
        foreach($_POST['location_id'] as $location_id){
            echo "ID: ".$location_id."<br />";
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2015-02-03 03:55:15

在你的locationID脚本中,数组形式的php会给出数组形式的$_POST['location_id']。您可以使用foreach循环遍历它们

代码语言:javascript
运行
复制
foreach ($_POST['location_id'] as $location_id){
    //do something with $location_id
}
票数 0
EN

Stack Overflow用户

发布于 2015-02-03 04:26:49

简而言之:当前代码确实可以正常工作。

长长的答案:

好吧,伙计们,我很抱歉,我刚接触ajax,我发现了我的问题……在尝试测试它是否被正确传递时,我将dataType从"json“更改为"html”,因为我不再返回数组,而是返回一个回显以打印到屏幕。我没有意识到传递数组和返回数组都需要json,这就是为什么我永远不能让方法工作的原因。我最终在我的php错误日志中发现它试图命中代码,并且看到它实际上是在传递数组中的变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28285561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档