#javascript #php #ajax #datetime
#javascript #php #ajax #дата и время
Вопрос:
Мне поручено использовать JavaScript и JSON для возврата и отображения данных в браузере. Я очень новичок в AJAX, и у меня возникли проблемы с запуском AJAX нажатием кнопки.Основная проблема заключается в запуске AJAX.
Я пытаюсь загружать данные на один и тот же экран каждый раз, когда пользователь вводит новые данные.
PHP-код:
<h2>Submit Recipes</h2>
<form id="addRecipes" name="addRecipes" action="Welcome.php"method="POST">
<fieldset>
<legend>Submit Recipes</legend>
<textarea id="recipesId" name="recipes" rows="6" cols="70"></textarea>
<br/>
<input type="button" value="Submit" name="submit" onclick="submitRecipes()"/>
</fieldset>
</form>
<br/>
<table id="recipesTbl" border="1" >
<tr>
<th class="row-datetime" name="datetime">DateTime </th>
<th class ="row-recipes" name="recipes"> Recipes </th>
</tr>
</table>
Код Ajax:
function submitRecipes() {
var recipes = document.getElementById("recipesId").value;
if (recipes == null || recipes == "") {
alert("Please enter the recipes");
return false;
}
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4 amp;amp; request.status == 200) {
var text = request.responseText;
var json = JSON.parse(text);
var table = document.getElementById("recipesTbl");
var newRow = table.insertRow(1);
var newCell = newRow.insertCell(0);
newCell.innerHTML = json.datetime;
newCell = newRow.insertCell(1);
newCell.innerHTML = json.recipes;
}
}
request.open("POST", "SubmitRecipes.php", true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send("recipes=" recipes);
document.getElementById("recipesId").value = "";
}
Фрагмент PHP-файла:
<?php
$recipes= $_POST["recipes"];
date_default_timezone_get('UTC');
$datetime = date("Y-m-d H:i:s");
storeRecipes($recipes, $datetime);
echo ('{ "datetime" : "'. $datetime. '",'.
'"recipes": "'.recipes .'"}');
?>
Комментарии:
1. Что говорит ваша консоль браузера, вы можете увидеть запрос ..? также ваш json открыт для атаки..
2. @JaromandaX
'"recipes": "'.recipes .'"}
, хотя в нем отсутствует$
потенциал{"recipes":"</script><script>alert('XSS')</script>"}
3. ах, я глупый: p
4. привет, я получаю неперехваченную синтаксическую ошибку: неожиданный токен < в JSON в позиции 0.
5. поскольку вы не отправляете JSON на PHP, проверьте вкладку developer tools networks, чтобы узнать, что возвращается из вашего запроса
Ответ №1:
Функция storeRecipes
не существует. Чтобы JSON.parse
работать, одинарная кавычка (‘) должна быть снаружи, а двойная кавычка («) должна быть внутри.
Например :
var string = '{"a": "1", "b": "2"}';
var res = JSON.parse(string);
console.log(res);
С
<?php
$recipes = $_POST["recipes"];
date_default_timezone_get('UTC');
$datetime = date("Y-m-d H:i:s");
// storeRecipes($recipes, $datetime);
$data = '{"datetime": ' . '"' . $datetime . '",';
$data .= '"recipes": ' . '"' . $recipes . '"}';
echo $data;
?>
(и с файлом сценария в <head>
разделе) это должно сработать!
Комментарии:
1. Добро пожаловать! Если ответ вам помог, пожалуйста, отметьте его как полезный и / или примите его. Спасибо!