为什么这些数据不会发送到我的控制器?在firebug中没有jsonForm的迹象。没有成功警报。
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 :(得分:1)
不要忘记分号。它们可能很重要。并且,dataType
请求中的ajax
是指从请求返回的数据,而不是请求发送的数据。
首先修改你的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');
}
});
});
您的数据将作为查询字符串附加,然后您的控制器可以接收该字符串。来自documentation:
数据选项可以包含形式为key1 = value1& key2 = value2的查询字符串,或者包含{key1:'value1',key2:'value2'}形式的地图。如果使用后一种形式,则在发送之前使用jQuery.param()将数据转换为查询字符串。
修改您的控制器以获取查询字符串变量。
答案 1 :(得分:0)
你不打算这样做:url: '/publishlinks/publish',
有相对路径吗?您还可以向ajax函数添加失败回调:http://api.jquery.com/jQuery.ajax/
另外,您应该添加return false;
添加$('form').submit(function() {
函数的末尾,以防止以“正常”方式提交表单。
或使用:
$('form').submit(function(e)
e.preventDefault();
e.stopPropagtion();