【问题标题】:php server unable to recieve the json variable from angularjs using $.http().post requestphp 服务器无法使用 $.http().post 请求从 angularjs 接收 json 变量
【发布时间】:2016-04-28 01:54:49
【问题描述】:

我正在从我的 AngularJS for mobile 应用程序中向 php 脚本发出发布请求。 当我在 html.its 中使用此代码形式 action="url" method="post" 时工作正常。 但是当我在 angularjs 中使用 ajax url 请求时,php 服务器没有接收到这些值。那我该如何实现呢

我的代码:

var 数据:{ jwt: 's21@s.com' }

    var req={
      method : 'POST',
    url: 'http:url//'
    }

       $http(req).success(function(data){

    alert(JSON.stringify(data));

       }).error(function(data) {
        alert("failure");

    alert(JSON.stringify(data));


       });


 }

myphp代码:

$id = $_POST["jwt"];

【问题讨论】:

  • 您是否在 JS 控制台中收到任何错误消息? Angular 不像 PHP。对于正在发生的事情,它有点冗长。起初猜测您可能在使用 XHR 时遇到了一些问题,但请检查 JS 控制台...
  • 错误:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost:8100' 不允许访问。响应的 HTTP 状态代码为 500。
  • 所以你有一个典型的跨域错误。您不能从位于同一台机器上的两个页面运行 XHR 请求。尝试将代码上传到服务器,或者您可以在 chrome 中禁用 XHR 权限,该权限已在堆栈中多次覆盖,包括此处:stackoverflow.com/questions/22026984/… 此外,正如 Ohgodwhy 在下面建议的那样,您并没有正确使用 $http.post。但一次只有一个错误。

标签: javascript php angularjs json ajax


【解决方案1】:

这是使用$http.post 的错误方式。它只是$http({}) 的包装。你真正想要的是要么只使用$http({}),要么相应地使用$http.post()

$http.post(
    req.url,
    //your data
).then(successCallback, errorCallback);

【讨论】:

    【解决方案2】:
    this is th prefect solution. i got the answer
    
    var app=angulamodule("myapp",[])
    .config(function ($httpProvider){
    $httpProvider.defaults.transformRequest = function(data){
            if (data === undefined) {
                return data;
            }
            return serialize(data);
        };  
     $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
    })
    
    
    var serialize = function(obj, prefix) {
      var str = [];
      for(var p in obj) {
        if (obj.hasOwnProperty(p)) {
          var k = prefix ? prefix + "[" + p + "]" : p, v = obj[p];
          str.push(typeof v == "object" ?
            serialize(v, k) :
            encodeURIComponent(k) + "=" + encodeURIComponent(v));
        }
      }
      return str.join("&");
    };
    

    var req={ 方法:'POST', 网址:'http:网址//' }

       $http(req).success(function(data){
    
    alert(JSON.stringify(data));
    
       }).error(function(data) {
        alert("failure");
    
    alert(JSON.stringify(data));
    
    
       });
    

    }

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      相关资源
      最近更新 更多