2015-11-09 88 views
-2

我使用HTML,PHP和AJAX創建搜索字段。 這是我的HTML代碼:PHP POST數據數組爲空

<form action="search.php" id="search_form" method="post" > 
    <div class="search_bar"> 
    <input type="text" name="search_text" id="search_text" placeholder="Search anything" > 
    </div> 
    <div class="search_button"> 
    <button type="submit" id="search_button" name="search_submit" >Search</button> 
    </div> 
    </form> 

這是我的AJAX代碼:

$('#search_button').click(function(event) { 

    var search_data = $('#search_text').val(); 

    var postData ={ 
      "content":search_data}; 

    event.preventDefault(); 

    $.ajax({ 
     type: 'POST', 
     url: 'search.php', 
     data:{myData: postData}, 
     error: function() 
     { 
      alert("Request Failed"); 
     }, 
     success: function(response) 
     {   
      alert("Success"); 
     } 
    }); 

}); 

在PHP中我嘗試了以下內容:

$obj = $_POST['myData']; 
echo $obj; 
print_r($_POST); 

所有我得到的是:

注意:未定義的索引:myData in C:\ xampp \ ht文檔\工作區\ MakeMyApp \的WebContent \ search.php中第9行

Array () 

我也曾嘗試用:

file_get_contents('php //input') 

但也我得到空數組。我不知道究竟是什麼問題。我錯過了什麼?

+1

您是否在瀏覽器的控制檯中觀看了請求/響應? –

+1

如果您從等式中刪除AJAX,請執行PHP的工作? – j08691

+1

永遠不要假設設置了'$ _POST' super。在訪問它之前檢查並確保它存在。 –

回答

1

對不起,我不能評論,因爲我沒有足夠的'聲譽'。

我試圖複製你的問題,它似乎對我來說很好。

下面是HTML頁面...

<html> 
<head> 

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script> 
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script> 

<script type="text/javascript"> 
$(document).ready(function(){ 

    $('#search_button').click(function(event) { 

    var search_data = $('#search_text').val(); 

    var postData ={ 
      "content":search_data}; 

    event.preventDefault(); 

    $.ajax({ 
     type: 'POST', 
     url: 'search-submit.php', 
     data:{myData: postData}, 
     error: function() 
     { 
      alert("Request Failed"); 
     }, 
     success: function(response) 
     {   
      alert(response); 
     } 
    }); 

}); 

}); 
</script> 

</head> 
<body> 
<form action="search.php" id="search_form" method="post" > 
    <div class="search_bar"> 
    <input type="text" name="search_text" id="search_text" placeholder="Search anything" > 
    </div> 
    <div class="search_button"> 
    <button type="submit" id="search_button" name="search_submit" >Search</button> 
    </div> 
    </form> 
</body> 
</html> 

這是接收PHP頁面

<?php 
echo '<pre>'; 
print_r($_POST); 
echo '</pre>'; 
?> 

在Ajax請求,你可以看到我使用警報輸出響應在一個警報中,但如果一切順利,它應該輸出接收PHP頁面輸出的內容。

此外,它可能沒有多大幫助,但他是我會如何做阿賈克斯請求;它的代碼略少,您不必單獨定義每個表單字段(如果您有多個字段)

$(document).ready(function(){ 

    $('#search_form').submit(function() { 
     var formData = $(this).serialize(); 

    $.ajax({ 
     type: 'POST', 
     url: 'search-submit.php', 
     data: formData, 
     error: function() 
     { 
      alert("Request Failed"); 
     }, 
     success: function(response) 
     {   
      alert(response); 
     } 

    }); 

    return false; 

}); 

}); 
+0

之前數據顯示正確,那麼我的代碼中可能出現的錯誤是什麼?或者是其他錯誤?像文件配置? –

+0

你能告訴我你是如何知道請求沒有被正確提交?你有沒有嘗試提醒我的回答?我懷疑你的表單工作正常,但你看不到輸出。 – SheppardDigital

+0

我爲響應添加了警報。令人驚訝的是,我在警報中得到正確的響應,但不是來自PHP文件 –