2010-09-28 63 views
2

我有这样的:

<form action="profiles.php" method="POST" name="SearchSimple" id="SearchSimple" > 
<input name="search" id="s" style="width: 150px;" type="text"> 
     <a style="display: inline-block; width: 100px; font-weight: bold; cursor: pointer;" id="submitSearchSimple">Search </a> 
      <script> 
         $('#submitSearchSimple').click(function() { 
    javascript:document.SearchSimple.submit(); 
     }); 
      </script> 
</form> 

它提交精细,虽然当我这样做

if($_POST["submitSearchSimple"] && isset($_POST["submitSearchSimple"])) { 
echo $_POST["s"] . " -TEST"; 
} 

它不显示。我什么也没得到

+0

'如果($ _ POST [ “submitSearchSimple”] && isset($ _ POST [“submitSearchSimple”]))''需要另一种方法。您测试'isset'来确定变量是否存在,以避免尝试访问变量(if(isset($ foo)&& $ foo)'来测试“if变量是否存在,变量是否为true-ish”,哪个BTW与' if(!empty($ foo))'。 – deceze 2010-09-28 08:11:02

回答

2

在PHP中,只有在提交表单时,POST变量只能用于INPUT元素,SELECT元素&,这些元素也在FORM中。您还需要指定要由POST超全局数组变量捕获/使用的元素的“名称”属性。

In your case, you can simply do this:- 
if(isset($_POST["search"]) && !empty($_POST["search"])) { 
    echo $_POST["search"] . " -TEST"; 
} 

一定要记住PHP与JavaScript/jQuery有一个主要区别。在JavaScript/jQuery中,您可以使用“id”属性或“name”属性来验证/操作字段。但在PHP中,它始终是重要的字段的“名称”属性,所以在做这些时要小心。

希望它有帮助。

+0

'isset($ _ POST [“search”])&&!empty($ _ POST [“search”])'是一半多余的,您可以跳过'isset'检查 – deceze 2010-09-28 08:58:33

+0

@deceze - 在“'isset”“che的具体情况ck是必要的,而不是仅仅在“if”条件中提供变量。例如,假设我们有一个变量'$ abc = 0;'。现在,如果我们只是在条件中提供变量为'if($ abc)',它将不起作用,因为'if(0)'不满足条件。所以,在这种情况下,我们需要使用'if(isset($ abc))'来成功传递条件。 – 2010-09-28 09:06:40

+0

咦?尽管'0'不会满足'!empty',所以它完全没有意义。 – deceze 2010-09-28 09:10:25

2

你的表单输入的名称是“搜索”而不是“submitSearchSimple”。

id不会传递给服务器,也不是任何不是表单控件的东西(例如您的示例中的锚点)。

0

一种简单的方法来确定您作为POST传递的变量:您可以在您的配置文件中完成* var_dump($ _ POST)* .php。 你会看到

阵列(1){[ “搜索”] =>串(4) “测试”}

因此,你可以看到,它不是$ _ POST [“s”],但$ _POST [“搜索”]并得出结论,它不是ID,它给出索引的名称,但名称

我不认为在这种情况下使用JavaScript点......(好吧,我可以想像它的CSS样式,但您可以轻松反正风格提交按钮。