2011-04-04 108 views
1

我正在使用jQuery标记 - 它插件,它基本上有一个输入字段。一切正常,但我无法通过使用PHP提交表单来接收输入字段值。用PHP POST接收表单输入数据

这里的组成部分:

<form action="<?=$PHP_SELF?>" method="post">   
     <div class="line"> 
      <label for="tags">Tags</label> 
      <ul id="mytags"></ul> 
     </div>  
     <input name="submit" value="Submit" type="submit" /> 
</form> 

下面是PHP部分:

<? 
    if ($_POST[submit]) { 

    $tags = $_POST[mytags]; 
    echo $tags; 

    } 

    ?> 

插件的演示是在这里:http://levycarneiro.com/projects/tag-it/example.html 和JavaScript代码是在这里:http://levycarneiro.com/projects/tag-it/js/tag-it.js 我会感谢任何帮助。

+0

lol do你有其他有用的代码吗? – Neal 2011-04-04 15:41:02

+0

@Neal,我发布了插件的JavaScript代码的直接链接。 – sudeep 2011-04-04 15:43:28

+0

是的。的插件,但不是你自己做的。 – Neal 2011-04-04 15:45:10

回答

0

的acutal标签存储在其中的每个标签创建了这个表单字段:

function create_choice (value) {  
    // some stuff 
    el += "<input type=\"hidden\" style=\"display:none;\" value=\""+value+"\" name=\"item[tags][]\">\n"; 
    // some other stuff 
} 

所以,你必须看出来不是为了“mytags”但$ _ POST [“项目”] ['标签']在你的PHP代码中,它会给你一个标签数组。

+0

如果我正确地阅读它然后他必须寻找$ _REQUEST ['item'] ['tags']而不是$ _REQUEST ['tags']你建议 – ITroubs 2011-04-04 15:53:22

+0

它应该像'$ tags = $ _POST ['tags'];'?因为即使这没有得到价值。 – sudeep 2011-04-04 15:54:53

+0

它应该像$ tags = $ _POST ['item'] ['tags'] – ITroubs 2011-04-04 16:25:56

1

ul不是将被提交的表单元素,它是一个UI元素。而你需要使用引号围绕您的数组索引,像这样: if (isset($_POST['submit'])) {

+0

正确的是其他问题 – ITroubs 2011-04-04 15:47:09

1

的代码应该是这样的:

<? 
if ($_POST['submit']) { 

$tags = $_POST['mytags']; 
echo $tags; 

} 

?> 

您忘记封闭'

如果你忘了,PHP对待在$_POST[submit]提交作为常量

编辑:

尝试次是:

<? 
var_dump($_POST); 
?> 
0

应该有NO发布的数据

您的代码不使用任何输入字段!

+0

看着这个插件,它创建了一堆隐藏的输入。 OP只发布了起始HTML – JohnP 2011-04-04 15:49:52

+0

@JohnP,是的,但是该插件也不会使用提交按钮 – Neal 2011-04-04 15:50:52

0

看着你的插件,它似乎创建隐藏的输入字段,因为你添加标签。

假设部分代码实际上正在工作,请将以下代码放入您的PHP代码中。

<?php 
    var_dump($_POST); //this has to be in the page you POST to 
?> 

看看你的所有标签都出现了。如果是这样,那么你的JS工作,你的PHP是错误的。 正如用户@ITroubs所提到的,您应该引用您的数组索引。看看是否修复它。

如果没有数据显示,那么你的JS插件工作不正常。

使用萤火虫,添加几个标签,并检查您的列表LI元素内,看看是否有任何隐藏INPUTS正在创建。

还检查是否有任何JS错误报告。

0

测试和解决:

<form action="<?=$PHP_SELF?>" method="post">   
     <div class="line"> 
      <label for="tags">Tags</label> 
      <ul id="mytags" name="item[tags][]"></ul> 
     </div>  
     <input name="submit" value="Submit" type="submit" /> 
</form> 

这里是PHP部分:

<? 
     if ($_POST[submit]) { 

    $tags = $_POST["item"]["tags"]; 
foreach($tags as $i=>$v) 
{ 
    $tagsf .= $v; 
    if($i < (count($tags)-1)) 
    $tagsf .= ","; 
} 

echo $tagsf; 
//This shows the tags with ",". Example: dog,cat,bird,onion 

     } 

    ?> 
4

在TPL

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#tags-input").tagit({ 
     fieldName: "tag[]", 
     availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"] 
    }); 
}); 
</script> 

使用fieldName的: “标签[]” 属性,在后端的print_r( $ _POST)并检查它会显示什么

+0

'fieldname:“tag []' 可以完成这项工作,print_r($ _ POST)的响应是: 'array 1){[“tags”] => array(3){[0] => string(4)“tag1”[1] => string(4)“tag2”[2] => string(4) “}}' – 2013-08-13 12:36:27

+0

钉了它,这是他们添加的关键,没有它,我没有得到任何东西:>>> fieldName:”tag []“, 谢谢! – 2014-01-01 16:06:35