2016-08-31 14 views
-1

私は助けが必要です。私はCodeigniterから価値を返すことに問題を抱えています。いつでも、私はの後にechoそれはうまく動作しますが、いつでも私はreturn trueを試しても動作しません。終了関数なしでPHPが値を返さない

私はPHPコードにコメントコードがあります。私はechoexitを使用している場合、それは動作しますが、私はそれが何

のAjaxリクエスト

$('#social-form').on('submit', function(e){ 

    e.preventDefault(); 
    var str = $("#social-form").serialize(); 
    if (str === '') { 
     swal("Please Fill All Fields"); 
    } else { 
     $.ajax({ 
      type: "POST", 
      url: baseUrl + "/admin/social/", 
      data: str 
     }) 
     .done(function (data) { 
       console.log(data); 
       swal("Information", data, "info"); 
      }) 
     .error(function() { 
      swal("Oops", "We couldn't connect to the server!", "error"); 
     }); 
    } 
}); 

CodeIgniterの-3

public function social(){ 
    $name = $this->input->post('name'); 
    $profile = $this->input->post('profile'); 
    $this->form_validation->set_rules('name', 'name', 'required|trim'); 
    $this->form_validation->set_rules('profile', 'profile', 'required|trim'); 
    if ($this->input->post() && $this->form_validation->run() != FALSE) { 
     $this->load->model('Social_model','social'); 
     $this->social->update($name,$profile); 
     echo 1; 
     //exit; 
     //return true; 
    } 
    else 
    { 
     echo 0; 
     //exit; 
     //return false; 
    } 
} 
+0

はどのように動作しませんか? –

+0

私は 'retuen'で試しましたが、うまくいきません。コメントありがとうございました –

+1

それは何をしていないことになっていますか?問題の詳細な説明を追加するには、**あなたの質問を**編集してください。 –

答えて

1

CodeIgniterのレイアウトを持っているので、出力した後を返さないことを実行しない場合フッターやデバッグバーなど、応答後に出力されるビューが存在する可能性があります。

コンソールを使用してレスポンスのステータスコードを確認してみてください。また、CodeIgniterではAJAX呼び出しの後に終了するのが悪いことではないので、ヘッダを設定してexitを追加するなどAJAXレスポンスヘルパを書くだけでよいでしょう。

+0

ありがとうございました。私はあなたのansと一緒に行くだろうが、何か新しいものがあればあなたも素晴らしい答えを得るいくつかの例を得ることができます。 –

+1

また、JavaScriptでレスポンスタイプをJSONに設定し、PHPからJSON結果を返すことをお勧めします。 'echo json_encode(array( 'result'、1));'(もちろん 'exit()';))と同じです。こうすることで、JavaScriptで完全な応答オブジェクトを取得できます。 – Tumtum

1

おそらくエコーについてより具体的にする必要があります。これは、いくつかの可能な解決策の1つです。

コントローラ

public function social(){ 
    $name = $this->input->post('name'); 
    $profile = $this->input->post('profile'); 
    $this->form_validation->set_rules('name', 'name', 'required|trim'); 
    $this->form_validation->set_rules('profile', 'profile', 'required|trim'); 
    if ($name && $this->form_validation->run() != FALSE) { 
     $this->load->model('Social_model','social'); 
     $this->social->update($name,$profile); 
     $out = json_encode(array('result' => 'success')); 
    } 
    else 
    { 
     $out = json_encode(array('result' => 'failed')); 
    } 
     echo $out; 
} 

javascriptの

$('#social-form').on('submit', function (e) { 
    e.preventDefault(); 
    var str = $("#social-form").serialize(); 
    if (str === '') { 
     swal("Please Fill All Fields"); 
    } else { 
     $.ajax({ 
      type: "POST", 
      url: baseUrl + "/admin/social/", 
      data: str, 
      dataType: 'json' 
     }) 
      .done(function (data) { 
       console.log(data); 
       if (data.result === 'success') { 
        swal("Information", "Success", "info"); 
       } else { 
        swal("Information", "Failed", "info"); 
       } 
      }) 
      .error(function() { 
       swal("Oops", "We couldn't connect to the server!", "error"); 
      }); 
    } 
}); 
関連する問題