Выполнить функцию php через ajax
я создал форму через которую можно создавать новые страницы для сайта. Нужно вызвать функцию через сервер и я использую ajax. Проблема в том что этот код не выполняется, я даже не знаю где может быть ошибка. Вот форма
<form name="form" action="" method="post">
Name <input type="text" name="nameof" id="name" value="yourname">
Text <input type="text" name="dataof" id="text" value="<b>your text</b> hello <i> example </i>">
<button onclick="create()" name="select">post</button>
</form>
<script>
function create () {
$.ajax({
url:"function.php",
type: "post",
dataType: 'json',
data: {name: "nameof", data:"dataof"}
});
}
</script>
Файл function.php
<?php
$name = $_POST['name'];
$data= $_POST['data'];
$fp = fopen($name.'.html', "w+");
fwrite($fp, $data);
fclose($fp); ?>
Прошу помочь, буду благодарен
Ответы (2 шт):
Попробуйте исправить ваш HTML код следуюшим образом предпологая что файл находиться в корне проекта:
<form id="myForm" name="form" action="/" method="post">
Name <input type="text" name="nameof" id="name" value="yourname">
Text <input type="text" name="dataof" id="text" value="<b>your text</b> hello <i> example </i>">
<button onclick="create()" name="select">post</button>
</form>
<script>
function create () {
$.ajax({
url:"function.php",
type: "post",
data: $('#myForm').serialize()
});
}
</script>
Метод .serialize () создает текстовую строку в стандартной записи с кодировкой URL.
Update: Или следующим образом:
<form id="myForm" name="form" action="/" method="post">
Name <input type="text" name="nameof" id="name" value="yourname">
Text <input type="text" name="dataof" id="text" value="<b>your text</b> hello <i> example </i>">
<button onclick="create()" name="select">post</button>
</form>
<script>
function create () {
$.ajax({
url:"function.php",
type: "post",
data: $('#myForm').serialize(),
success: function(data){
console.log(data);
}
});
}
</script>
Файл function.php
<?php
$name = $_POST['name'];
$data = $_POST['data'];
$flag = "done";
$fp = fopen($name.'.html', "w+");
if($fp && $name && $data){
fwrite($fp, $data);
} else {
$flag = "fail";
}
fclose($fp);
return $flag;
?>
При выполнении и записи вы получите в консоли вашего браузера ответ "done", и напротив "fail", если у вас что то пошло не так в файле php.
Итак, сегодня наконец я разобрался как завести данный код. Я просто убрал форму, оставит только два label. И исправил date: $('#myForm').serealize() на date: {name:$('#name').val(), text:$('#text').val(), досихпор не знаю почему .serealize() не работал.