plz添加我的代码无法正常工作
我希望用户在页面accueil上创建没有刷新页面的帖子 //表单的代码html(标题,文本)
<form class="posting" method="POST" enctype="multipart/form-data">
<input type="text" name="title" class="title-input" placeholder="Quelle est votre question... ?"
autocomplete="off">
<textarea name="text" id="text" class="textarea" cols='60' rows='8' ></textarea>
<button class="btn-ajouter" type="submit" onclick="get()" name="ajouter" value="ajouter">ajouter</button>
</form>
// code php create post(user)
if(isset($_POST['ajouter']) && !empty($_POST['text']) && isset($_POST['title']) )
{
$texte = htmlspecialchars($_POST['text']);
$title = htmlspecialchars($_POST['title']);
$stmt=$connect->prepare('INSERT INTO
publications(title_post,post) VALUES(?,?) ');
$stmt>execute(array($texte,$title));
}
//代码显示结果(页面accueil)(页面accueil)
<div id="result">
<?php
$stmt = $connect->query('SELECT *FROM publications ');
while($row=$stmt->fetch() )
{
echo $row['title_post'] ;
echo $row['post'];
?>
</div>
//代码ajax
function get(){
var result ;
if(window.XMLHttpRequest)
result = new XMLHttpRequest();
else
result = new ActiveXObject('Microsoft.XMLHTTP');
result.onreadystatechange = function()
{
if(result.readyState == 4 & result.status == 200)
document.getElementById('allpost').innerHTML =
result.responseText;
}
result.open('POST','accueil.php',false);
result.setRequestHeader('Content-type','application/x-www-
form-urlencoded');
result.send();
}
答案 0 :(得分:0)
你的ajax方法应该是这样的,因为你现在没有传递任何数据。 (别忘了在标题输入中添加id)
var data = {
title: document.getElementById('title').value,
text: document.getElementById('text').value
};
var request = new XMLHttpRequest();
request.open('POST', 'accueil.php', true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.send(data);
答案 1 :(得分:0)
您应该不听来提交button
上的点击事件,因为用户可以在不点击(TAB + ENTER)的情况下提交表单。相反,您应该直接在form
元素上监听提交事件。
<form class="posting" method="POST" onsubmit="get(event);" enctype="multipart/form-data">
现在,当提交form
时,您将在get()
函数中收到事件变量,因此您必须将函数参数更改为get(e)
。
在您的函数体内,您现在可以使用 preventDefault 方法:
e.preventDefault();
答案 2 :(得分:0)
首先,你的create post execute命令中有一个拼写错误。你需要 - &gt;不只是&gt;
其次,您需要在send命令中发送数据。这可以手动处理,或者只是设置FormData对象:
var form = document.getElementById("formID");
var data = new FormData(form);
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "form_processing.php");
xmlhttp.send(data);
答案 3 :(得分:0)
也许你可以改变代码的某些部分,并尝试添加一个监听器,之后,你可以防止默认
在此代码中,我使用id="myForm"
来获取/获取对象,并在添加侦听器之后。
<form id="myForm" class="posting" method="POST"enctype="multipart/form-data">
现在你将获得对象
document.getElementById("myForm");
或者如果您使用的是jQuery $("#myForm")
如果您没有使用jQuery
,可以使用此代码添加监听器
element.addEventListener("submit", yourCallbackFunction(event), false);
element.submit(yourCallback(event))
event.preventDefault()
我希望我有所帮助
答案 4 :(得分:0)
您的HTML提交应该像Ajax一样设置。
<button class="btn-ajouter" type="button" onclick="myGetFunction();" name="ajouter" value="ajouter">ajouter</button>
并为标题输入设置ID
<input id="title" type="text" name="title" class="title-input" placeholder="Quelle est votre question... ?">
这就是你的Ajax应该如何看待你有一些结构性问题。请注意,我得到了表单元素,并将一个字符串传递给您的php。
var request = false;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
} else if (window.ActiveXObject){
request = new ActiveXObject("Microsoft.XMLHTTP");}
function myGetFunction(){
if(request){
request.open("POST", "calls/accueil.php");
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){
document.getElementById('returnKeys').innerHTML = RequestObject.responseText;}}
var title = document.getElementById('title').value;
var text = document.getElementById('text').value;
var data = title+'|'+text+'|';
RequestObject.send("data=" + data);}
return false;}
你应该有一个PHP页面进行这样的处理。
$data = $_POST['data'];
list($title, $text) = explode('|', $data);
if(isset($_POST['data'])){
if($title == '' || $text == ''){
if ($title == '') { $error['title'] = 'Username is Required.'; }
if ($text == '') { $error['text'] = 'Password is Required.'; }
$response = "Username and Password are Required to Continue.";
echo $error['title'];
echo $error['text'];
echo $response;
exit();
} else {
$text = htmlspecialchars($text);
$title = htmlspecialchars($title);
$stmt=$connect->prepare("INSERT INTO publications(title_post,post) VALUES ('".$title."', '".$text."'"));
$stmt>execute;
$stmtb = $connect->query('SELECT * FROM publications ');
while($row=$stmtb->fetch() )
{
$mydata = $row['title_post'] ;
$mydata .= $row['post'];
}
}
}
echo $mydata;