【发布时间】:2013-01-22 13:23:20
【问题描述】:
这不是我以前没有做过同样的过程,但我不知道为什么我的 PHP 脚本的 POST 数据是空的。这是我所做/发现的:
-
我已验证 $.ajax 调用的“data”参数有一个值(submitSearch 函数和成功参数中的警报显示搜索变量的正确值)。
李> 我知道正在“找到”脚本 - 在浏览器的 js 控制台中没有文件未找到消息。
我没有收到任何数据库连接错误
我还知道 PHP 脚本正在运行,因为 $.ajax 调用的成功参数中的警报正在 PHP 脚本的 else 子句中显示 $message 值。
我在 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)
<?php
require_once ('logging.php');
$log = new Logging();
$dbc = @mysqli_connect([connection stuff])
OR die ('Could not connect to MySQL server: ' . mysqli_connect_error() );
$log->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);
}
【问题讨论】:
-
您没有记录 mysql 连接错误。还有
var_dump($_POST)给了什么?您应该分享实际传输的数据。还要检查你浏览器的开发工具,你应该已经可以在浏览器中看到了 -
您提交的
search变量没有键,只有数据。您可以准确地检查您使用 firebug 或您选择的浏览器的类似工具发送的内容。 -
最后有没有试过
var_dump($_REQUEST)?它应该显示脚本是否接收到任何数据。