У меня есть HTML-форма, которую я отправляю на php-сервер. Если я отправляю форму стандартным способом с кнопкой отправки и действием = "screen_custom.php", то он работает нормально. Я вижу страницу, полную действительных данных JSON.
Но если я отправлю форму с помощью вызова jquery ajax, то будет возвращен пустой массив json. Я считаю, что php не может найти значения формы по неизвестной причине. В любом случае, как мне отладить php во время вызова ajax? Ответ должен включать только данные, необходимые для заполнения JQuery DataTable. Если я выведу вывод отладочной информации, таблица данных не будет заполнена.
Вот некоторый код, который успешно отправляет форму php и возвращает хорошие данные json.
<form id="criteriaForm" method="post" action="screen_custom.php">
<table>
<tr>
<th>Filter By</th><th>Criteria</th><th title="Show this column">Show</th>
</tr>
<tr>
<td><label title="Percentage increase">Appreciation Potential (%)</label></td>
<td>
<select name="upside">
<option value="any">Any</option>
<option value="gt0">> 0%</option>
<option value="gt10">> 10%</option>
</select>
</td>
<td><input type="checkbox" id="showUpside" name="showUpside" value="true">
</tr>
</table>
<input type="submit" value="Run">
</form>
Вот код, который не может вернуть те же данные JSON:
<form id="criteriaForm" method="post" action="">
<table>
<tr>
<th>Filter By</th><th>Criteria</th><th title="Show this column">Show</th>
</tr>
<tr>
<td><label title="Percentage increase">Appreciation Potential (%)</label></td>
<td>
<select name="upside">
<option value="any">Any</option>
<option value="gt0">> 0%</option>
<option value="gt10">> 10%</option>
</select>
</td>
<td><input type="checkbox" id="showUpside" name="showUpside" value="true">
</tr>
</table>
<button type="button" onclick="runCustomScreen()">Run</button>
</form>
И JavaScript:
function runCustomScreen() {
$('#customTable').DataTable({
"ajax": {
type: 'POST',
url: "screen_custom.php",
data: $('#criteriaForm').serialize(),
complete: function(jqXHR, textStatus) {
console.log("Run was successful, textStatus="+textStatus);
},
error: function(e, textStatus, errorThrown) {
alert("textStatus="+textStatus +", errorThrown="+errorThrown);
}
}
});
return false; //needed if called by onclick event
}
Вот части php, которые обрабатывают данные формы и возвращают json:
$upside = $_POST["upside"];
$sql = "SELECT * FROM stocks " .$where;
//echo '<script>'
//echo 'sql=' .$sql .'<br>';
//echo 'console.log(' .$sql .')';
//echo '</script>';
$rs = mysql_query($sql);
//store result in an array
$results = array();
while($row = mysql_fetch_object($rs))
{
$results[] = $row;
}
$data = json_encode($results);
echo '{"data":' .$data .'}';
//close the db connection
mysql_close($connection);
Обратите внимание, что если я раскомментирую что-либо, кроме последнего эха, данные не будут заполнены. Так как я могу отладить это?