2011-08-14 5 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

당신이해야 할 의미하지 않았다 : '/ publishlinks/게시','상대 경로와 여기에

는 바이올린입니까? 또한 ajax 함수에 실패 콜백을 추가 할 수 있습니다. http://opi.jquery.com/jQuery.ajax/ – PeeHaa

답변

1

세미콜론을 잊지 마십시오. 그것들은 중요 할 수 있습니다. 그리고 ajax 요청의 dataType 요청은 요청에 의해 보내지는 데이터가 아닌 요청에서 되돌아 오는 데이터를 나타냅니다. 당신의 아약스 수정과

시작 :

$('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'); 
     } 
    }); 
}); 

귀하의 데이터는 컨트롤러가 다음 선택할 수 있습니다 쿼리 문자열로 연결됩니다. documentation에서 :

데이터 옵션은 양식 키 1의 쿼리 문자열 = 값 1 & 키 2 = 값 2, 또는 형태 {: '값 1', 키 2 : '값 2'키 1}의지도 중 하나를 포함 할 수 있습니다. 후자의 형식을 사용하면 데이터를 보내기 전에 jQuery.param()을 사용하여 데이터를 쿼리 문자열로 변환합니다.

쿼리 문자열 vars를 가져 오도록 컨트롤러를 수정하십시오. `URL을 : http://jsfiddle.net/jensbits/2F4kN/

+0

나는 이것이 PHP에서 json 포맷팅을해야한다는 것을 의미한다고 생각하십니까? –

+0

@amiawizard json은 요인이 아닌 것 같습니다. 당신은 컨트롤러에서 json을 디코딩하고있었습니다. 그 이유는 그것이 여러분이 돌아오고 있다고 생각했기 때문입니다. (제 생각에 - 왜 거기에 json을 디코딩했는지 모르겠습니다). 이제 컨트롤러가 쿼리 문자열 인 vars'$ _GET'을 잡을 수 있습니다. PHP를 믿고 거기에서부터 시작합니다. 귀하의 컨트롤러에서'publish()'는 어떤 종류의 피드를 생성하는 것처럼 보이지만 ajax에서 반환 된 데이터는 사용하지 않는 것으로 보입니다. –

0

당신이 할 의미하지 않았다 컨트롤러 : url: '/publishlinks/publish', 상대 경로? 또한 ajax 함수에 실패 콜백을 추가 할 수 있습니다. http://api.jquery.com/jQuery.ajax/

$('form').submit(function() { 함수의 끝 부분을 추가하여 실제로 양식이 '정상'방식으로 제출되지 않도록해야합니다.

또는 사용 :

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

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

e.stopPropagtion(); 데이터를 보내지 만 내 뉴스 피드보기를로드하지 않습니다. –

관련 문제