Ajax 返回数据 ng-click 函数不起作用

Ajax return data ng-click function not working

提问人:code_dev 提问时间:2/21/2023 最后编辑:code_dev 更新时间:2/21/2023 访问量:42

问:

我尝试在 ajax 返回中传递数据,并且在该数据中有一个函数可以写入 angular 1 ng-click like

$.ajax({
        'method': 'GET',
        'url': base_url +'party/selectCities?id='+state, 
        success: function(data) {
            var newData = data.replace(/\"/g, "")
            if(newData == ""){
            }else{
                var jsdata = JSON.parse(data);
                var html = ``;
                $.each(jsdata, function (index, item) {
                    console.log(item);
                    html += '<li onclick="selectcityclubs(\'' + item.city + '\');">' + item.city + '</li>';
                    
                });
                $("#home-city-listing").html(html);
            }
        }
});

它正常显示在页面中,我检查它是否正确显示。

<ul class="partylist ng-scope" id="home-city-listing" ng-controller="clubController">
    <li ng-click="selectcityclubs('Chittoor');">Chittoor</li>
    <li ng-click="selectcityclubs('Cuddapah');">Cuddapah</li>
    <li ng-click="selectcityclubs('East Godavari');">East Godavari</li>
</ul>

为什么该功能不起作用,页面和控制台中没有任何响应,没有显示任何错误,如何解决此问题请帮助我

javascript jquery angularjs ajax

评论


答:

1赞 treckstar 2/21/2023 #1

编辑:请参阅新的 JsFiddle 以查看没有 jQuery 的更新答案,仅使用 angular

Stack Overflow 代码现在也应该可以工作了

看看 Jsfiddle,因为 StackOverflow 代码不会运行。

与其用于输出元素,不如在 .jQuery<li>ng-repeatHTML

下面的代码用于使 HTML 加载 2 个城市,因为它不适用于 JsFiddle/StackOverflow with .try/catchajax

如果这不起作用,那么我不确定您的函数在做什么,并且可能存在错误。selectcityclubs

// setup variables to make code look as close to original
let base_url = '';
let state = 'NorthBoa';
angular.module('app', [])
  .controller('clubController', function($scope, $http) {
    // handles the button click
    $scope.selectcityclubs = function(c) {
      console.log('Button clicked: ' + c);
      alert(c);
    }

    $scope.jsdata = [];
    $http.get(base_url + 'party/selectCities?id=' + state)
      .then(function onSuccess(response) {
        console.log('Success!');
        console.log(response);
        // make sure you check response.data
        $scope.jsdata = response.data.replace(/\"/g, "");
      })
      .catch(function onError(response) {
        console.log('Error, couldnt access ajax.');
        console.log(response);
        // adding here because we can't get to the AJAX URL
        $scope.jsdata = [{
          city: 'North Goa'
        }, {
          city: 'South Goa'
        }];
      })

  })
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>


<body ng-app="app">
  <a href="https://jsfiddle.net/dweuc6kL/1/">Take a look at JsFiddle with updated answer for 1.4.8</a>
  <h2>Using angular 1.7.5</h2>
  <ul class="partylist" id="home-city-listing" ng-controller="clubController">
    <li ng-repeat="city in jsdata" ng-click="selectcityclubs(city.city);">{{city.city}}</li>
  </ul>
</body>

评论

0赞 code_dev 2/21/2023
城市 li show empty console data show right
0赞 treckstar 2/21/2023
我刚刚进行了更新,检查了新的 JsFiddle
0赞 code_dev 2/21/2023
我将更新与非数据列表相同的 li 标记其显示空白但数据返回显示在网络选项卡中
0赞 treckstar 2/21/2023
您是使用 还是 ?用途,我再次更新了这个答案以显示它适用于 .几乎你拿出来,为了和.立即尝试运行上面的答案angular 1.7.51.4.8JsFiddle1.4.81.7.5.success.fail.then().catch