JQuery AJAX内容多次执行

时间:2014-08-08 07:52:20

标签: javascript jquery asp.net ajax webforms

我有一个网页,可以使用GIS服务器上的网络服务搜索地址。只需点击一下按钮,我就可以使用JQuery AJAX方法调用此网络服务。在AJAX success函数中,我将地址值映射到页面上的控件。在此之前,我会检查用户角色。

支票本身并不重要。如果检查失败,我alert()用户。我遇到的问题是每当检查失败时alert()重复6次。调试时看起来AJAX调用不会重复多次。


function SelectAddress() {
    var url = $.url.build({
        protocol: 'https',
        host: 'maps.site.co.za',
        path: '/arcgis/rest/services/Search_Layers/SL_ADD/MapServer/find',
        params: {
            'searchText': SelectedAddressIsisKey,
            'Contains': 'True',
            'searchFields': 'ISIS Key',
            'Layers': 0,
            'returnCountOnly': 'false',
            'returnZ': 'false',
            'returnM': 'false',
            'f': 'pjson'
        }
    });

    $.ajax({
        url: url,
        type: 'GET',
        cache: false,
        dataType: 'jsonp',
        success: function (data) {
            // call autocomplete callback method with results                                
            $.map(data.results[0].value, function (item) {

                var _role = document.getElementById('txtRole').value;

                var _addressNo = data.results[0].attributes['Addr No'];
                var _suffix = data.results[0].attributes['Address No Suffix'];
                var _streetName = data.results[0].attributes['Street Name'];
                var _streetType = data.results[0].attributes['Street Name Type'];
                var _suburb = data.results[0].attributes['Official Suburb Name'];
                var _ward = data.results[0].attributes['Ward Name'];
                var _subCouncil = data.results[0].attributes['Subcouncil Name'];
                var _erfNo = data.results[0].attributes['Property Number'];
                var _isisKey = data.results[0].attributes['ISIS Key'];

                var _subCouncilNo = _subCouncil.substr(_subCouncil.length - 2, 2);

                //Check Subcouncil of logged in user
                if (_role == "Admin" || _role.substr(_role.length - 2, 2) == _subCouncilNo) {
                    document.getElementById('<%=TextBoxAddressNumber.ClientID%>').value = _addressNo;
                    document.getElementById('<%=ddlAddressSuffix.ClientID%>').value = _addressNo;
                    document.getElementById('<%=TextBoxRoad.ClientID%>').value = _streetName + " " + _streetType;
                    document.getElementById('<%=TextBoxSuburb.ClientID%>').value = _suburb;
                    document.getElementById('<%=ddlWard.ClientID%>').value = _ward;
                    document.getElementById('<%=ddlSubCouncil.ClientID%>').selectedIndex = _subCouncilNo;
                    document.getElementById('<%=txtErf.ClientID%>').value = _erfNo;
                    document.getElementById('<%=lblLISKey.ClientID%>').value = _isisKey;

                    jQuery('#Search-modal').dialog('close');

                    //return;
                }
                else {
                    alert("Error: This address is in Sub-Council " + _subCouncilNo);
                    //jQuery('#Search-modal').dialog('close');
                }

                //return;
            });
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert('error - ' + textStatus + errorThrown + XMLHttpRequest);
            //console.log('error', textStatus, errorThrown);
        }
    });
}

1 个答案:

答案 0 :(得分:0)

我明白了。

  

jQuery.map()

     

描述:将数组或对象中的所有项目转换为新的项目数组。

所以,我需要做的是:

$.map(data.results[0].value[0], function (item) { ... }