2017-01-13 5 views
-1

私たちは、ph-framework "slim"を使ってe-shopを構築しています。今、私たちはサーバーにリクエストを送信し、データベースを変更することができます(私たちはテーブルをチェックし、それは実際に変更されます)。ウェブエンドはデータベースからの応答を得ることができません(iOSとアンドロイドエンドは、 )。ここでは、要求、アップデートデータベースを送信し、応答を取得するコードの一部である:はスリムでサーバーからの応答を受け取ることができません

$app->post('/tblUser', function($request, $response, $args) { 
    get_tblUser_id($request->getParsedBody()); 
}); 
function get_tblUser_id($data) 
{ 
    $db = connect_db(); 
    $sql = "update tblphoneverify set dtCreate = NOW() where strPhone = $data[phone]"; 
    $db->query($sql); 
    $updateId = $db->affected_rows; 
$db = null; 
    $msg = array(
     'stat' => '', 
     'msg' => '' 
    ); 
    $msg['stat'] = '1'; 
    $msg['msg'] = 'registration success'; 
    return json_encode($msg); 
} 

このAjaxのセグメントは、ポストを実行するためにクリックイベントをトリガし、その結果の状態を受信します。

$(function(){ 
    $("#getcheck").click(function(){ 
    $.ajax({ 
     type:"post", 
     url:"http://192.168.1.108/blue/public/tblUser", 
     data: {"phone":"13331111111"}, 
     dataType:"json", 

     //async:false, 
     contentType: "application/x-www-form-urlencoded", 

     success:function(data){ 
     alert(1); 
     }, 
     error:function(XMLHttpRequest, textStatus, errorThrown){ 
     alert(XMLHttpRequest.readyState); 
     alert(XMLHttpRequest.status); 
     alert(XMLHttpRequest.statusText); 
     alert(XMLHttpRequest.responseText); 
     alert(textStatus); 
     alert(errorThrown); 
     } 
    }) 
    }) 
}) 

コードは常に「成功」​​部分をスキップし、直接「エラー」にジャンプします。 コードで何が問題になっていますか?前もって感謝します。

+0

JavaScriptコンソールでエラーメッセージを確認してください。 –

+0

jsonでエンコードされた文字列をエコーアウトしないので、jsonが解析できるので、ajaxリクエストがエラーになる可能性があります。 – jmattheis

答えて

0

あなたはルートからの応答を送信する必要があります。 json_encode自分ではなく、スリムにしてください。

まず、get_tblUser_idから配列を返す:あなたがここにSQLインジェクションの脆弱性を持っている

function get_tblUser_id($data) 
{ 
    $db = connect_db(); 
    $sql = "update tblphoneverify set dtCreate = NOW() where strPhone = $data[phone]"; 
    $db->query($sql); 
    $updateId = $db->affected_rows; 
    $db = null; 
    $msg = array(
     'stat' => '', 
     'msg' => '' 
    ); 
    $msg['stat'] = '1'; 
    $msg['msg'] = 'registration success'; 
    return $msg; 
} 

注意。 SQLを次のように変更してください。

$sql = "update tblphoneverify set dtCreate = NOW() where strPhone = ?"; 
    $db->query($sql, [$data[phone]]); 

次に、呼び出し可能なルートからJSONとして応答を送信する必要があります。スリムは、これを行うための方法があります。

$app->post('/tblUser', function($request, $response, $args) { 
    $msg = get_tblUser_id($request->getParsedBody()); 

    return $response->withJson($msg); 
}); 

スリムは今それを復号化するために、あなたはJavaScriptを助けるべき正しいContent-Typeヘッダセットを使用してmsg配列を返送します。

+0

エラーを修正しました。あなたにアドバイスをお願いします。あなたのSQLとスリムメソッドを思い出させるために多くの感謝の他に。 –

関連する問題