如何发送POST数据并使用JQuery导航?
在我的博客上,我有很多包含代码片段的
块。我想要做的是在页面上的所有
元素中添加一个.click()
处理程序,将其内容发送到另一个页面 - 让我们称之为viewcode.php
- 通过POST。我知道如何使用
$.ajax
向此页面发送信息,我只是不确定如何发送信息并导航到页面。这个想法是访问者可以点击
,它将导航到另一个包含代码的页面,以便于阅读和轻松复制/粘贴。我有一种感觉,解决方案很简单,可能很明显,我只是想不到它。
不确定我会这样处理它,可能我只是弹出一个代码对话而不是离开页面,但你可以通过使用javascript构建表单然后在该表单上触发提交而不是使用AJAX来处理这个问题。
使用jQuery UI对话框:
$('pre').on('click', function() { $('
').dialog({ ... set up dialog parameters ... }); });' + $(this).text() + '
建立一个表格
$('pre').on('click', function() { var text = $(this).text(); $('') .appendTo('body'); $('[name="code"]').val(text); $('.hidden-form').submit(); });
您可以使用隐藏的
元素。 然后设置
的
onclick()
属性将值从复制到表单。 (可选)您可以设置
action
属性以选择要将信息发布到的页面。 最后,提交该表格。我知道它不优雅,但它会起作用。
如果您的代码段存储在数据库或文件中的某个位置,我建议您只需将代码段链接到一个页面,您可以根据某个标识符获取该代码段。
如果片段仅包含在您的html中,并且您只想以更干净的方式显示它们,则不需要任何ajax发布。 你可能想要使用一个hoverdiv或一个jquery插件,弹出并显示从pre元素获得的更清晰的代码片段,如:
$('pre').click(function() { var code = $(this).html(); //this is the pre contents you want to send $('#hoverDiv').html(code).show(); });
是的,您必须创建一个表单并提交。 您可以使用ajaxpost/获取来执行各种操作,但导航到post结果的唯一方法是通过实际的表单发布。 这是它的简洁版本:
$('').attr('action', action).html(html).appendTo('body').submit();
我的代码执行此操作:
// Navigate to Post Response, Convert first form values to query string params: // Put the things that are too long (could exceed query string limit) into post values var form = $('#myForm'); var actionWithoutQueryString = form[0].action.split("?")[0]; var action = actionWithoutQueryString + '?' + $.param(form.serializeArray()); var html = myArray.map(function(v, i) { return ""; }).join("\n"); $('').attr('action', action).html(html).appendTo('body').submit();