2011-08-14 39 views
0

なぜこのデータがコントローラに送信されないのですか?火かき棒のjsonFormの兆候はありません。成功したアラートはありません。jQuery AJAXフォームが送信されない

JS

$('form').submit(function() { 

    var title = $('#title:input').val(); 

    alert(title); 

    var urlsStr = $("#links").val(); 
    var urls = urlsStr.match(/\bhttps?:\/\/[^\s]+/gi); 
    var formData = { 
    "title": title, 
    "urls": urls 
    } 
    var jsonForm = JSON.stringify(formData);     

    $.ajax({ 
    type: 'GET', 
    dataType: 'json', 
    cache: false, 
    data: { jsonForm: jsonForm }, 
    url: 'publishlinks/publish', 
    success: 
     function(response) { 
     alert('winrar'); 
     } 
    }) 
}) 

コントローラ

function publish() { 

    $form = $this->input->get('jsonForm'); 

    echo json_decode($form); 

    $data = array(

    'movieid' => $this->input->post('id') 

); 

    $this->load->model('publish_model'); 
    $this->publish_model->add_record($data); 
    $this->load->model('NewsFeed_model'); 
    $feed['queryMovies'] = $this->NewsFeed_model->getPublications();   
    $this->load->view('news_feed_view', $feed);  

} 
+0

は、あなたがするものではありませんでした: 'URL: '/ publishlinksパブリッシュ/'、'相対パスで?また、ajax関数に失敗のコールバックを追加することもできます:http://api.jquery.com/jQuery.ajax/ – PeeHaa

答えて

1

セミコロンを忘れないでください。彼らは重要なことができます。また、ajax要求内のdataType要求は、要求によって送信されたデータではなく、要求から戻ってくるデータを参照します。あなたのAJAXを変更すると

スタート:

$('form').submit(function(e) { 
    e.preventDefault(); 

    var title = $('#title:input').val(); 

    alert(title); 

    var urlsStr = $("#links").val(); 
    var urls = urlsStr.match(/\bhttps?:\/\/[^\s]+/gi); 
    var formData = { 
     title: title, 
     urls: urls 
    };     

    $.ajax({ 
    type: 'GET', 
    cache: false, 
    data: formData, 
    url: 'publishlinks/publish', 
    success: 
     function(response) { 
     alert('winrar'); 
     } 
    }); 
}); 

あなたのデータは、お使いのコントローラが、その後拾うことができ、クエリ文字列として添付されます。

データオプションフォームKEY1 = VALUE1 & KEY2 =値2、またはフォームのマップのクエリ文字列のいずれかで含むことができる:documentationから{KEY1 '値1'、KEY2: '値2' を}。後者の形式を使用すると、データは送信前にjQuery.param()を使用してクエリ文字列に変換されます。

コントローラを変更して、クエリ文字列varsを取​​得します。ここで

はフィドルです:http://jsfiddle.net/jensbits/2F4kN/

+0

これは私がPHPでjsonの書式設定をしなければならないことを意味すると思いますか? –

+0

@amiawizard jsonは要素ではないようです。コントローラでjsonをデコードしていたのは、それがあなたが戻ってきたものだと思ったからです(私は思っています。これであなたのコントローラはクエリ文字列vars '$ _GET'を取得することができます。私はPHPを信じてそこから移動します。あなたのコントローラの 'publish()'は何らかの種類のフィードを作成するようですが、ajaxから返されたデータは使用されていません。 –

0

あなたがするものではありませんでした:url: '/publishlinks/publish',を相対パスで?また、あなたは、Ajaxの機能に障害コールバックを追加することができます:http://api.jquery.com/jQuery.ajax/

また、あなたは本当にreturn false;が「通常」の方法を提出されてからフォームを防ぐために$('form').submit(function() {関数の最後に追加します追加する必要があります。

または使用:

$('form').submit(function(e) 

e.preventDefault(); 
e.stopPropagtion(); 
+0

e.stopPropagtion()なし;データは送信されますが、私のニュースフィードビューは読み込まれません。 –

関連する問題