2016-02-19 50 views
0

我使用離子框架,試圖用http put方法更新用戶信息,並且每次都會出錯。我認爲php slim框架代碼沒有問題,因爲我嘗試了更改this example把方法代碼與給定的以下put代碼和slim框架代碼在那裏工作。所以我認爲Angular js代碼有問題。 問題在哪裏?任何人都可以幫助我? 謝謝。Angularjs/Slim框架http放錯誤

苗條框架代碼:

$app->put('/duzenle/:id',function($id) use ($app){ 
     $request = $app->request(); 
     $veri = json_decode($request->getBody()); 
    $sql = "UPDATE sinav_users SET u_name=:u_name, u_realname=:u_realname, u_email=:u_email WHERE u_id=:u_id"; 
    try { 
     $db = getConnection(); 
     $stmt = $db->prepare($sql); 
     $stmt->bindParam("u_name", $veri->u_name); 
     $stmt->bindParam("u_realname", $veri->u_realname); 
     $stmt->bindParam("u_email", $veri->u_email); 
     $stmt->bindParam("u_id", $id); 
     $stmt->execute(); 
     $db = null; 
       echo json_encode($veri); 
    } catch(PDOException $e) { 
     echo '{"error":{"text":'. $e->getMessage() .'}}'; 
    }})->name('duzenle'); 

Angularjs代碼:

$scope.duzenle=function(userr){ 
var url2="http://server_ip/sinav_api/duzenle/"+id; 
console.log(url2); 
    var promise = $http({method: 'PUT', url: url2, data:userr, headers: {'Content-Type': 'application/x-www-form-urlencoded'}}); 
    promise.success(function (data, status, headers, config, statusText) { 
    console.log("ok"); 
    }); 
    promise.error(function (data, status) { 
    console.log("fail");   
    }); 
    }; 

範圍的用戶數據從那裏:

<ion-view style="" title="Duzenle"> 
<ion-content class="has-header" overflow-scroll="true" padding="true"> 
    <form style="" class="list" ng-repeat="user in userlist"> 
     <label style="" class="item item-input"> 
      <span class="input-label">Gercek isim<font color="red">*</font></span> 
      <input placeholder="Old:{{user.u_realname}}" ng-model="userr.u_realname" type="text" required> 
     </label> 
     <label style="" class="item item-input"> 
      <span class="input-label">E-posta<font color="red">*</font></span> 
      <input placeholder="Old:{{user.u_email}}" ng-model="userr.u_email" type="email" required> 
     </label> 
     <label style="" class="item item-input"> 
      <span class="input-label">Kullanıcı ismi<font color="red">*</font></span> 
      <input placeholder="Old:{{user.u_name}}" ng-model="userr.u_name" type="text" required> 
     </label> 
     <button style="" class="button button-positive button-block " ng-click="duzenle(userr)">Duzenle</button> 
    </form> 
</ion-content> 

Console log

+0

有任何錯誤細節可用? –

+0

當試圖獲取控制檯日誌中的錯誤狀態時,獲取** 0 ** –

+0

如果可以,請添加控制檯窗口的屏幕快照,包括服務器的響應。 –

回答

0

穿上很可能無法工作,因爲放和後CORS請求做出預檢OPTIONS請求第一,選擇請求的目的是確保正確的訪問控制允許起源標題均已到位,

你需要確保CORS是允許方法PUT和POST

有一個頭,讓這必須在服務器上設置

你會概率發現如果你看看你的瀏覽器中的淨選項卡,正在進行OPTIONS請求,並且PUT永遠不會發生,因爲服務器上存在錯誤的CORS頭文件

此外還有一些使其工作的角碼與OPTIONS預檢請求,谷歌它,這是足夠的信息供你調查以解決這個問題。