2017-10-23 4 views
-1

私はCodeIgniterのプロジェクトにSMSを送信するためにAPIを使用しています。送信後、私のプロジェクトのコールバックURLにjsonの形式で応答配列を返します。そして私は私のデータベースでこの応答を更新する必要があります。次のようにAPIのcallbakレスポンス

応答配列が似ています:

{"req_id":"809ff62f-74a9-45a5-9cb5-5e60763289af","status":"0" ,"comment":"OK"}

私のコールバックURLは次の関数にリダイレクト私のコントローラ

public function templateCallback() { 

    $json = file_get_contents('php://input'); 
    $json = urldecode($json); 
    $obj = json_decode($json, TRUE); 
    $reqID = $obj->req_id; 
    $status = $obj->status; 
    print_r($obj); 
    $this->db->where('TemplateRequestID', $reqID); 
    $this->db->set('TemplateApproved', $status); 
    $this->db->update('templatemaster_tbl'); 

} 

しかし、その更新されることはありません飽きないでここに私のコードです。私のコードで何が間違っていますか?私はjsonでうまくいきません。だから私はこれを取得し、phpのjson配列をデコードする正しい方法はわからない。誰か助けてください。これをテストする

私は私のプロジェクトでビューを作成し、同様にAJAX機能により、この同じ配列を送っています

var base_url = '<?php echo base_url()?>'; 
    $('#test').click(function() { 
     var val = $('#testvalue').text(); 
     $.ajax({ 
      type: 'post', 
      url: base_url + 'API/templateCallback', 

      data: { 
       val 
      }, 
      success: function (response) { console.log(response); 


      } 
     }); 
    }); 

とコントローラ機能に$json$objの両方を印刷してみてください。以下のような

$json表示する文字列:val=%7B%22req_id%22%3A%228b3eef97-330a-4271-8450-0676fbac8885%22%2C%22status%22%3A%220%22%2C%22comment%22%3A%22OK%22%7D

$objディスプレイは何も

+0

は'ますprint_r($ OBJ)の値は何ですか? – madalinivascu

+0

エラーが報告されましたか? 'ますprint_r($のJSON)について'最初 – AZinkey

+0

は何も – geeth

答えて

1

あなた$jsonは、エンコードされた値(%7B%22req_id%22%3A%228b3eef97-330a-4271-8450-0676fbac8885%22%2C%22status%22%3A%220%22%2C%22comment%22%3A%22OK%22%7D)が含まれている場合、あなたはurldecodeで最初にそれをデコードする必要があります。

ので、適切なコードは次のようになります; `

... 
$jsonEncoded = file_get_contents('php://input'); 
$json = urldecode($jsonEncoded); 
$obj = json_decode($json, TRUE); 
... 
+0

に '$ obj-> req_id'と' $ obj-> status'を変更し、自動的に更新されます。だから私はそれがいつ私のdbで更新されるのか予測できません。私の質問は '' $ json'が '{" req_id ":" 809ff62f-74a9-45a5-9cb5-5e60763289af "、" status ":" 0 "、" comment ":" OK "}の場合、 ' – geeth

+0

@geethタイミングに関係する理由はありません。あなたの質問を誤解している可能性がありますか?コンテンツがすでにデコードされている場合は、再度urldecodeを実行しないでください。そうでない場合は、やり直してください。 – Mark

+1

ありがとうございました。私は私の問題を解決した。私はurldecode($ json)を使用しました。もう1つの間違いがあります。つまり、私はjson_deocde()でTRUEを設定し、オブジェクトメソッドで値をフェッチしていました。そこで$ obj-> req_idと$ obj-> statusを$ obj ['req_id']と$ obj ['status']に変更しました – geeth

関連する問題