2016-01-21 39 views
1

Iam對我的AngularJS移動應用程序的php腳本做了一個post請求。當我使用此代碼表單action =「url」method =「後」在html.its工作正常。 但是當使用AJAX URL請求在angularjs IAM,PHP服務器未接收到該values.Then我怎樣才能實現這

mycode的:

VAR數據:{JWT: '[email protected]'}

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」];

+0

您是否在JS控制檯中收到任何錯誤消息? Angular不像PHP。在發生的事情上它有點冗長。起初猜你可能會遇到XHR的一些問題,但檢查JS控制檯... –

+0

錯誤:對預檢請求的響應未通過訪問控制檢查:請求中沒有「訪問控制 - 允許來源」標頭資源。原因'http:// localhost:8100'因此不被允許訪問。該響應的HTTP狀態碼爲500. –

+0

因此,您有一個經典的跨域錯誤。您不能從駐留在同一臺計算機上的兩個頁面運行XHR請求。嘗試將代碼上傳到服務器,或者您可以禁用已在堆棧中多次覆蓋的chrome中的XHR權限,其中包括:http://stackoverflow.com/questions/22026984/trying-to-disable-chrome-same- origin-policy另外,正如Ohgodwhy在下面所建議的,您不正確地使用$ http.post。但是每次都有一個錯誤。 –

回答

0
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:// URL' }

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

alert(JSON.stringify(data)); 

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

alert(JSON.stringify(data)); 


    }); 

}

0

這是使用$http.post的錯誤方法。這只是一個包裝$http({})。你真正想要的是要麼只使用$http({})或使用$http.post()相應:

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