Jquery标记-如何将类型化标记传递回PHP
我正在使用以下tagit插件 这是我试图测试此插件的html页面的代码片段,用户在其中键入标记Jquery标记-如何将类型化标记传递回PHP,php,jquery,jquery-plugins,jquery-post,tag-it,Php,Jquery,Jquery Plugins,Jquery Post,Tag It,我正在使用以下tagit插件 这是我试图测试此插件的html页面的代码片段,用户在其中键入标记 <input class="text_field" type="text" size="72" id="question_title"/> <textarea id="question"></textarea> <ul id="demo3" class="tagit"> <li class="tagit-choice">apple ora
<input class="text_field" type="text" size="72" id="question_title"/>
<textarea id="question"></textarea>
<ul id="demo3" class="tagit">
<li class="tagit-choice">apple orange<a class="tagit-close">x</a></li>
<li class="tagit-new"><input class="tagit-input ui-autocomplete-input" type="text" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true"></li>
<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1; top: 0px; left: 0px; display: none;"></ul></ul>
<input id="question_submit" type="submit" value="Ask Question"/>
苹果橙
现在,当用户单击“提问”按钮时,会发生以下ajax调用
$("#question_submit").live('click',function(e) {
e.preventDefault();
var question_val = $("#question").val();
var question_title = $("#question_title").val();
var tags = $("#demo3").tagit("tags");
var s ='';
for (var i in tags)
s += tags[i].label + " : " + tags[i].value + "\r\n";
alert(s);
$.post('/course/ask-question', {question: question_val,question_title: question_title,tags:tags}, function(data) {
if(data.success=="ok")
{
$("div#wall").prepend(data.question);
}
},"json");
});
$(“#问题_提交”).live('click',函数(e){
e、 预防默认值();
var question_val=$(“#question”).val();
var question_title=$(“#question_title”).val();
变量标记=$(“#demo3”).tagit(“标记”);
var s='';
for(标签中的变量i)
s+=标记[i]。标签+“:”+标记[i]。值+“\r\n”;
警报;
$.post(“/course/ask question”,{question:question\u val,question\u title:question\u title,tags:tags},函数(数据){
if(data.success==“ok”)
{
$(“div#wall”).prepend(data.question);
}
}“json”);
});
所以在这个函数中,我可以得到标签var tags=$(“#demo3”).tagit(“标签”);并循环遍历它们,打印每个标记的标签和值
var tags = $("#demo3").tagit("tags");
现在,当我试图通过$.post将其传递给我的PHP控制器时,它不起作用——我的意思是,如果我删除数据标记:调用ask question函数时,标记可以正常工作——但是当我添加它时——如果没有调用该函数,则不会发生任何情况
是否有一种特殊的方式将这个标记对象传递给PHP
编辑
在ChromeDeveloperTools中——当我提交表单并保留标签时:数据中的标签——我得到以下错误
Uncaught TypeError: Illegal invocation jquery-1.6.4.min.js:4
e jquery-1.6.4.min.js:4
bY jquery-1.6.4.min.js:2
bY jquery-1.6.4.min.js:2
bY jquery-1.6.4.min.js:2
bY jquery-1.6.4.min.js:2
bY jquery-1.6.4.min.js:2
bY jquery-1.6.4.min.js:2
bY jquery-1.6.4.min.js:2
(anonymous function) jquery-1.6.4.min.js:2
e.extend.each jquery-1.6.4.min.js:2
bY jquery-1.6.4.min.js:2
f.extend.param jquery-1.6.4.min.js:4
f.extend.ajax jquery-1.6.4.min.js:4
f.(anonymous function) jquery-1.6.4.min.js:4
(anonymous function) course-feed.js:51
L jquery-1.6.4.min.js:2
f.event.handle jquery-1.6.4.min.js:3
i.handle.k
未捕获类型错误:非法调用jquery-1.6.4.min.js:4
e jquery-1.6.4.min.js:4
根据jquery-1.6.4.min.js:2
根据jquery-1.6.4.min.js:2
根据jquery-1.6.4.min.js:2
根据jquery-1.6.4.min.js:2
根据jquery-1.6.4.min.js:2
根据jquery-1.6.4.min.js:2
根据jquery-1.6.4.min.js:2
(匿名函数)jquery-1.6.4.min.js:2
e、 extend.each jquery-1.6.4.min.js:2
根据jquery-1.6.4.min.js:2
f、 extend.param jquery-1.6.4.min.js:4
f、 extend.ajaxjquery-1.6.4.min.js:4
f、 (匿名函数)jquery-1.6.4.min.js:4
(匿名函数)课程提要.js:51
L jquery-1.6.4.min.js:2
f、 event.handle jquery-1.6.4.min.js:3
i、 处理
谢谢你的帮助
感谢您所使用插件的文档,
标签将是一个数组。如果需要使用数组,请尝试将tags:tags
更改为'tags[]:tags
查看它是否有效?有两种简单的方法可以解决此问题:
1-将选项“fieldName”设置为“tags[]”
$("#myTags").tagit({
fieldName: 'tags[]'
});
2-(不太推荐)将js文件更改为始终将“[]”附加到文件名:
更改每个:
name="' + this.options.fieldName + '"
用于:
谢谢Jason-我试过了-没什么区别-谢谢如果你使用Chrome,你可以打开开发者工具查看帖子返回的内容。您可以在此处发布它返回的内容,以便我们可以查看?对于firefox,您应该能够使用firebug执行相同的操作。:-)谢谢Jason-我已经编辑了这个问题,以显示ChromeIs中的错误是否可以使用序列链而不是数组作为标记?
name="' + this.options.fieldName + '[]"