单击 jquery 按钮 + 发送没有表单的数据 - 书签
Posted
技术标签:
【中文标题】单击 jquery 按钮 + 发送没有表单的数据 - 书签【英文标题】:click jquery button + send data without form - bookmark 【发布时间】:2012-05-11 12:05:20 【问题描述】:我正在开发一个书签功能,用户单击 jQueryui 按钮并将某些信息发送到数据库。但我没有使用表单,因为没有信息供用户输入。
我正在从会话数据中提取用户 ID,并且我正在发送一个 URI 段(URL 的一部分)
使用 codeigniter/php。
我正试图弄清楚在 ajax/post 函数的数据部分中放入什么,因为没有输入表单/没有输入数据,以及如何处理控制器的“提交”部分。
控制器
function addBookmark()
if ($this->input->post('submit'))
$id = $this->session->userdata('id');
$bookmark = $this->uri->segment(3, 0);
$this->bookmarks_model->postBookmark($id, $bookmark);
型号
function postBookmark()
$data = array(
'user_id' => $user_id,
'bookmark_id' => $bookmark,
);
$this->db->insert('bookmarks', $data);
HTML
<button class="somebutton">Add bookmark</button>
jQuery
$('.somebutton').click(function()
$.ajax(
url: 'controller/addBookmark',
type: 'POST',
data: ???,
success: function (result)
alert("Your bookmark has been saved");
);
);
【问题讨论】:
@wallyk 模型(bookmarks_model)通过控制器函数的最后一行连接到控制器。 【参考方案1】:您的问题是您正在检查POST
参数中的submit
键。您可以通过发送 data: submit:true
或删除 if 语句并仅处理 POST 请求来伪造它
$('.somebutton').click(function()
$.ajax(
url: 'controller/addBookmark',
type: 'POST',
data: 'submit':true, // An object with the key 'submit' and value 'true;
success: function (result)
alert("Your bookmark has been saved");
);
);
【讨论】:
我用数据尝试过这个:submit:true 并且没有数据。我也试过没有 if 函数。我收到了警报,但没有向数据库添加任何内容。 好的,我用我的按钮做了一些操作,现在它可以工作了——正如你所建议的那样,数据字段中没有任何内容。相反,我添加了一个隐藏字段来让数据通过。我已经接受并赞成您的回答,因为它是最接近的。 (现在,如果我能让警报正常工作!):)【参考方案2】:不要使用.ajax()
,而是使用.get()
或.post()
使用.get()
$.get('controller/addBookmark',function(data)
alert('Your bookmark has been saved');
);
使用.post()
$.post('controller/addBookmark', function(data)
alert('Your bookmark has been saved, The contents of the page were:' + data);
);
【讨论】:
谢谢,我现在就试试。 “数据”的地方应该是什么?只是数据这个词?data
是页面上回调的结果。
好的;如何在函数中指示数据?我没有任何意见
data
变量是提交页面内容的输出,以防您想在代码中返回它,而不是输入。请参阅@ 下如何使用它的示例987654332@ 例子。
好的,这两个功能我都试过了。第一个产生了警报,但数据库中没有任何内容。第二个给了我一个警报,但它包含一个异常错误;数据库中也没有任何内容。还有其他想法吗?我真的很难过。【参考方案3】:
来自jQuery.ajax()的文档
要发送到服务器的数据。它被转换为查询字符串,如果 还不是一个字符串。它附加到 GET 请求的 url。
如果您不知道为数据添加什么内容,或许您应该删除该选项?在您的控制器函数 addBookmark() 中,您可以通过删除 if 检查来减少代码。试试这个,看看它是否适合你。
【讨论】:
@chowwy 检查控制器中的代码$this->bookmarks_model->postBookmark($id, $bookmark);
和模型中的function postBookmark()
,调用是否正确?
函数中的变量$user_id
和$bookmark
是函数postBookmark()
的局部变量。函数addBookmark()
使用两个 参数调用bookmarks_model->postBookmark($id, $bookmark);
。因此,您将两个参数传递给函数 postBookmark,但在函数 postBookmark
中,它不需要参数。那么真的,插入数据库是如何完成的?
这只是我转移代码时的疏忽。没有jQuery,我的功能可以正常工作。但我想使用 ajax/post 函数将信息发布到数据库。以上是关于单击 jquery 按钮 + 发送没有表单的数据 - 书签的主要内容,如果未能解决你的问题,请参考以下文章
JQuery validate + Gravity 表单冲突?