2011-07-24 33 views
1

私はこれを理解しようとしてきましたが、最初の考えよりも難しいようです。しかし、私がやろうとしていることは、ajaxの投稿リクエストを作成することですが、POSTは送信時に空であるようです。jQuery with Codeigniter AJAX投稿の問題

私のHTMLファイル

<div id="statusUpdate"> 
     <?php echo form_open(base_url() . 'profile/statusUpdate', array('id' => 'statusUpdateForm', 'name' => 'statusUpdateForm')); ?> 
      <input type="text" value="Hva tenker du på?" name="profileUpdate" id="profileUpdate" onfocus="if(this.value == 'Hva tenker du på?')this.value=''" onblur="if(this.value == '')this.value='Hva tenker du på?'" /> 
      <input type="submit" value="" name="profileUpdateButton" id="profileUpdateButton" /> 
     <?php echo form_close(); ?> 
    </div> 

私のJavascriptの

 $('#statusUpdateForm').submit(function() { 

     $.ajax({ // Starter Ajax Call 

      method: "POST", 
      url: baseurl + 'profile/statusUpdate', 
      data: $('#statusUpdateForm').serialize(), 
      success: function(data) { 
       alert(data); 
      } 

     }); 

     return false; 

    }); 

私のPHP(コントローラでの私のmedhodの一部)

// Check if the input is a ajax request 
    if($this->input->is_ajax_request()) { 
     echo $_POST['profileUpdate']; 
    } 

コントローラにecho "Hello World"などを置くと、javascriptの警告ボックスに "Hello World"が表示されます。

、私はこのようなエラーが出る私はまた、$ _POST上のvar_dumpを試みたと私は出力に特定の$ _POST [「profileUpdate」]変数をしようとしているとき、それは 配列(0){}を返します。私もseralize機能I JSからの警告を行ってきた

enter image description here

、これは、私が得たもの

enter image description here

である私はTHIを修正することができます方法を知っている誰もがあります問題?

+0

下にある次のような形式

<?php echo form_open('welcome/CreateStudentsAjax'); ?> <label for="roll">Student Roll Number</label> <input type="text" id="txtRoll" value="" name="roll"/> <label for="Name">Students Name</label> <input type="text" id="txtName" value="" name="name"/> <label for="Phone">Phone Number</label> <input type="text" id="txtPhone" value="" name="phone"/> <input type="submit" name="submit" value="Insert New Students" /> <?php echo '</form>'; ?> 

を追加するビューに次のコード

をお試しください、実際に送られているものですあなたのスクリプトに? –

+0

これをチェックする最良の方法は何ですか? – Dexty

+0

FirebugやLive HTTPヘッダー –

答えて

2

methodtypeに変更してみてください。

ajax()を使用する場合のデフォルト設定であるGETリクエストをスクリプトが実行していると推測していますが、POSTリクエストではありません。このように:

$.ajax({ // Starter Ajax Call 

     // "method" isn't an option of $.ajax 
     // method: "POST", 
     type: "POST", 

     url: baseurl + 'profile/statusUpdate', 
     data: $('#statusUpdateForm').serialize(), 
     success: function(data) { 
      alert(data); 
     } 

    }); 
+0

「GET」とは? – Dexty

+2

GET要求を実行しますが、POST要求を実行する必要があるためです。 私が言っているのは、あなたがメソッド "POST"を使ったことですが、それは$ .ajaxのオプションではありません。正しいオプションはタイプなのでタイプ: "POST" –

+0

@ウェズリーマーチ:私の投稿を明確にしてくれてありがとう:) –

0

jQueryの一部は、HTTPヘッダをチェック

  $(document).ready(function(){ 

       $('form').submit(function(){ 
        //alert('ok');  
        $.ajax({ 
         url:this.action, 
         **type:this.method,** 
         data:$(this).serialize(), 
         success:function(data){ 
          var obj = $.parseJSON(data); 

          if(obj['roll']!=null) 
          {        
           $('#message').text(""); 
           $('#message').html(obj['roll']); 
           $('#message').append(obj['name']); 
           $('#message').append(obj['phone']); 
          } 
          else 
          {        
           $('#message').text(""); 
           $('#message').html(obj); 
          } 

         }, 
         erro:function(){ 
          alert("Please Try Again"); 
         }       
        }); 
        return false; 
       });       
      }); 

     </script>