2014-10-16 58 views
0

我有問題提交我的表單。我已經用ajax和定期提交($.post(),$.get(),method="post",method="get")。

當我使用任一得到我可以得到與$_GET罰款數據,但使用任一職位不會填充$_POST變量。

任何建議將是偉大的。我需要開展工作,因爲我不喜歡使用獲取密碼等功能的想法。

編輯:

POST:

<form method="post" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> <input type="text" name="some_input" value=""> <input type="submit" name="submit"> </form>

<?php 
if (isset($_POST["some_input"])) echo $_POST["some_input"]; 
?> 

或者

GET:

<form method="get" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> <input type="text" name="some_input" value=""> <input type="submit" name="submit"> </form>

<?php 
if (isset($_GET["some_input"])) echo $_GET["some_input"]; 
?> 

第一個不顯示任何內容。

第二個顯示我輸入的內容。

編輯2:

下面的代碼工作,並填充我的$_POST

<?php 
print "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . "<BR />"; 
$data = file_get_contents('php://input'); 
print "DATA: <pre>"; 
var_dump($data); 
var_dump($_POST); 
var_dump($_SERVER["PHP_SELF"]); 
print "</pre>"; 
?> 
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>"> 

    <input type="text" name="name" value="ok" /> 
    <input type="submit" name="submit" value="submit" /> 

</form> 

結果:

CONTENT_TYPE: application/x-www-form-urlencoded 
DATA: 
string(21) "name=ok&submit=submit" 
array(2) { 
    ["name"]=> 
    string(2) "ok" 
    ["submit"]=> 
    string(6) "submit" 
} 
string(37) "/path/to/test-post.php" 

奇怪的是,action="<?php $_SERVER["PHP_SELF"]; ?>"或不採取行動,在所有工作得很好,但要麼action="test-post.php"action="/path/to/test-post.php"沒有。

破碎結果:

CONTENT_TYPE: 
DATA: 
string(0) "" 
array(0) { 
} 
string(37) "/path/to/test-post.php" 
+1

顯示你的一些實際的代碼! – tommyd456 2014-10-16 15:58:41

+1

粘貼你的ajax和php代碼 – gbvisconti 2014-10-16 16:08:47

回答

2

我還是不太確定是什麼原因導致它,但我發現,如果我用相對路徑提出請求,那麼我必須省略文件擴展名。例如而不是action="test-post.php"

文件擴展名似乎爲$_GET$_REQUEST被罰款,如果我通過get(method="get")發送它,而不是$_POST$_REQUEST如果我通過郵寄(method="post")發送。

編輯

這是什麼做的.htaccess文件。我對這個文件不太瞭解,所以我不知道究竟是哪個位導致了這個問題。

0

這是如何使後一種形式的例子,並處理它。 注意,您可以將操作留空(然後保留在同一個URL中)。

<?php 
if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
    if (isset($_POST["some_input"])) { 
    echo $_POST["some_input"]; 
    } 
} 
?> 
<form method="post" action=""> 
    <input type="text" name="some_input" value=""> 
    <input type="submit" name="submit"> 
</form> 
+0

我試圖查詢'$ _SERVER ['REQUEST_METHOD']'',那麼'$ _POST'或'$ _REQUEST'都不會被填充,但是當我使用後,它沒有幫助。 – Hector 2014-10-17 11:04:15

0

這裏是POST提交的例子扔AJAX:

HTML:

<form id="form" name="form"> 
<h3>Fill Your Information!</h3> 
<div> 
<label>Name :</label> 
<input id="name" type="text"> 
<label>Email :</label> 
<input id="email" type="text"> 
<label>Password :</label> 
<input id="password" type="password"> 
<label>Contact No :</label> 
<input id="contact" type="text"> 
<input id="submit" onclick="myFunction()" type="button" value="Submit"> 
</div> 
</form> 

的Javascript:

jQuery(document).ready(function(){ 
    $('#form').submit(function(e){ 
     var emailVal = $('#email').val(); 
     e.preventDefault(); 
     $.ajax({ 
      type: "POST", 
      url: "thePHPfile.php", 
      data: 'data': emailVal ,   
      success: function(html) { 
       alert(html); 
      } 
     }); 
    }); 
}); 

PHP:

<?php 
     if(isset($_POST['data']){ 
      echo $_POST['data']; 
     } 
    ?>