无法弄清楚为什么PHP没有从$ .ajax调用接收POST数据

这不像我之前没有做过同样的过程,但我无法弄清楚为什么我的PHP脚本的POST数据是空的。 这是我做过/找到的:

  1. 我已经validation$ .ajax调用的“data”参数有一个值(submitSearch函数和success参数中的警报显示搜索变量的正确值)。

  2. 我知道脚本正在“找到” – 浏览器的js控制台中没有找到文件。

  3. 我没有收到任何数据库连接错误

  4. 我也知道PHP脚本正在运行,因为$ .ajax调用的success参数中的警报在PHP脚本的else子句中显示$ message值。

  5. 我在PHP脚本中设置的日志记录没有显示POST数据

如果有人可以看看这个并希望指出我所缺少的东西,我将不胜感激。

以下是所有相关代码:


Javascript(在HTML文件中的脚本标记中)


$('input#btnSubmitSearch').click(function() { // Clear the text box in case an error was indicated previously $('input#txtSearch').css({'background-color' : ''}); var search = $('input#txtSearch').val(); if (search == '' || search.length != 5) { alert ('Not a valid entry!'); $('input#txtSearch').css({'background-color' : '#FDC3C3'}); return false; } else { submitSearch(search); return false; } }); function submitSearch(search) { alert ('Sending ' + search + ' to the database.'); $.ajax({ type: 'POST', url: 'scripts/search.php', data: search, cache: false, success: function(response) { alert ('search is: ' + search + ', Response from PHP script: ' + response); }, error: function(xhr) { var response = xhr.responseText; console.log(response); var statusMessage = xhr.status + ' ' + xhr.statusText; var message = 'Query failed, php script returned this status: '; var message = message + statusMessage + ' response: ' + response; alert(message); } }); } 

PHP脚本(scripts / search.php)


 lwrite('$_POST[\'search\']: ' . $_POST['search']); if (isset($_POST['search'])) { $search = $_POST['search']; $log->lwrite('$search: ' . $search); $querySearch= "SELECT id, value FROM table WHERE value LIKE '%" . $search . "%'"; $log->lwrite('$querySearch: ' . $querySearch); $resultSearch = @mysqli_query($dbc, $querySearch); $numRowsSearch = mysqli_num_rows($resultSearch); $log->lwrite('rows returned: ' . $numRowsSearch); if ($numRowsSearch > 0) { while ($rowSearch = mysqli_fetch_array($resultSearch, MYSQLI_ASSOC)) { echo 'Value found: ' . $rowSearch['value']; } } } else { $errorMessage ='$_POST[\'search\'] doesn\'t have a value!'; $log->lwrite($errorMessage); echo ($errorMessage); } 

 $.ajax({ type: 'POST', url: 'scripts/search.php', data: {'search': search}, ... 

我相信你需要像上面那样设置$_POST['search']

可能你应该改变(在你的Javascript中)这一行:

 data: search, 

至:

 data: {search: search}, 

您正在发送一个简单的字符串而不是命名参数。

不要直接使用点击function。 请改用$ .on函数。

 $('form').on('click', ".submit", function() { //code here... }); 

要制作ajax请求,请尝试,

 var search = 'something'; $.post("scripts/search.php", {search:search}, function(response) { alert ('search is: ' + search + ', Response from PHP script: ' + response); }); 

在成功之前尝试这个

 beforeSend: function(xhr){xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded")}