【问题标题】:Angular JS and AJAX posting data doesn't work first clickAngular JS 和 AJAX 发布数据首先点击不起作用
【发布时间】:2017-04-18 17:11:06
【问题描述】:

我专注于 Angular JS,并尝试在 ANGULARJS 中使用 AJAX 发布数据,它正在工作,但不是第一次。

在我的 html 按钮中有 ng-click="check()"

这是我的 app.js 代码。

    var app=angular.module("app",[]);
app.controller("control",function($scope){

    $scope.check=function (){
    var mesaj = {
        content: $scope.content,
        flag:"message"
    }
    $.ajax(
    {
        type: 'POST',
        url: 'send.php',
        data: {query: mesaj},
        success: function (result)
        {
            $scope.result=result;
        }
    });
    }
});

我的 send.php 在 echo $content 之后获取数据(内容)

我已经双击按钮来工作 AJAX,但我想第一次工作

【问题讨论】:

  • 请使用$http服务代替jquery
  • 你检查过控制台日志吗?我认为有些变量未声明
  • 我检查了控制台日志,但没有任何内容@peter

标签: javascript php jquery angularjs ajax


【解决方案1】:

由于您没有使用http 服务,

你需要告诉 Angular 变量被修改了。

在你成功后通过$scope.$apply()

var app=angular.module("app",[]);
app.controller("control",function($scope){

    $scope.check=function (){
    var mesaj = {
        content: $scope.content,
        flag:"message"
    }
    $.ajax(
    {
        type: 'POST',
        url: 'send.php',
        data: {query: mesaj},
        success: function (result)
        {
            $scope.result=result;
            $scope.$apply()
        }
    });
    }
});

【讨论】:

  • 为什么?当然我同意我只会使用 $http,但它工作得很好。
  • 并非如此。它只是强制一个新的摘要。 Angular1 的性能并不是很好,仅此而已。
  • 正如我所说,它确实强制一个新的摘要。不说它不贵,但 OP 正在用 $.ajax 提出解决方案,这就是我给的。成本 $apply() 通常可以忽略不计,除非使用大型数据集,例如 10k+ 个项目的列表。
  • 你能用 $http 发送示例代码吗.İ 尝试但没有用
【解决方案2】:

注入 $http 并调用一个帖子,它在使用 Angular 发布数据时遵循更好的约定:

 function sendMesaj() {

         $http.post('send.php', mesaj)
            .then(function(result){

                $scope.result=result;

            }, handleError);

        function handleError(response){
            return response;
        }
    }

【讨论】:

  • portnetsis.xyz/deneme.html 我试了一下,但它不起作用我接受这些错误 --> angular.js:14362 ReferenceError: handleError is not defined at b.$scope.check (app.js: 12) 在 fn (eval at compile (angular.js:15197), :4:135) at e (angular.js:26808) at b.$eval (angular.js:18017) at b.$apply (angular.js:18117) 在 HTMLInputElement. (angular.js:26813) 在 dg (angular.js:3617) 在 HTMLInputElement.d (angular.js:3605)
  • handleError 是一个示例函数,可用于捕获异常...您的代码需要大量重构...但基于上述错误,请确保您在定义的范围函数内以某种方式调用帖子
猜你喜欢
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
相关资源
最近更新 更多