2013-08-20 98 views
-1

這是我幾個小時前發佈的另一個問題的跟進(PHP post method apparently not working)。 該代碼仍然沒有做它應該做的事情,但代碼和問題本身已經發生了很大的變化,所以我更願意發佈一個新問題(同時考慮到問題似乎在他們發佈後立即被讀取)。我會盡量關閉先前的問題(這裏仍然有點新)。

回到那個問題:爲什麼在下面給出的代碼中isset($ _ POST ['submit1'])在測試時等於FALSE?換句話說,爲什麼$ _POST ['submit1']等於NULL? 我相信這就是我需要知道的。

這裏是代碼,它由兩個文件組成。文件「form.php的」(從jQuery站點複製幾乎從字面上:http://www.visualjquery.net/category/Ajax/jQuery.post,看到最後一個例子)包含以下代碼:

<!doctype html> 
<html lang="en"> 

<head> 
<meta charset="utf-8"> 
<title>jQuery.post demo</title> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
</head> 

<body> 

<form action="formprocessing.php" name="formpje" id="searchForm"> 
<input type="text" name="s" placeholder="Search..." /> 
<input type="submit" value="Search" name="submit1" /> 
</form> 

<!-- the result of the search will be rendered inside this div --> 
<div id="result"></div> 

<script> 

/* attach a submit handler to the form */ 
$("#searchForm").submit(function(event) { 

/* stop form from submitting normally */ 
event.preventDefault(); 

/* get some values from elements on the page: */ 
var $form = $(this), 
term = $form.find('input[name="s"]').val(), 
url = $form.attr('action'); 

/* Send the data using post */ 
var posting = $.post(url,{s: term},'json'); 

/* Put the results in a div */ 
posting.done(function(data) { 
var content1 = $(data).find('#content'); 
contentstring = JSON.stringify(content1); 
$("#result").empty().append(contentstring); 

}); 


}); 

</script> 
</body> 
</html> 

和文件「formprocessing.php」包含以下(這包括isset-test):

<!DOCTYPE html> 

<?php 
if(isset($_POST['submit1'])) { 
echo (json_encode(array("content" => $invoer))); 
} 
?> 

謝謝!

+1

不應該是'isset($ _ POST ['s'])'? – elclanrs

+0

在您的'$ .post'代碼中,您不會發送提交按鈕。 – machineaddict

回答

1

因爲你永遠不設置submit1爲您的數據的部分對象,你傳遞給$.post()

var posting = $.post(url,{s: term},'json'); 

$.post()不會自動通過所有表單值;它只發送你在第二個參數中指定的內容。在$_POST中唯一設置的是's'密鑰。

2

因爲您只發布s的數據;您提交的數據對象中沒有submit1

+0

是的!不幸的是,我只能接受1個答案。 – Holland

0

我會建議使用

if(isset($_POST['s'])) { 
    echo (json_encode(array("content" => $invoer))); 
} 
0

的數據從文本正在發送(NAME = 「S」),而不是你的名字= 「submit1」 的傢伙。因此,要麼在您的文章中包含'submit1',要麼查找's'值

0

您可以使用serialize函數來序列化表單。所以你會從你的表單中獲得所有的元素,包括submit1。

相關問題