2017-10-04 100 views
2

我非常新的Web开发,尤其是AJAX(jQuery的),我面临的一个问题AJAX的PHP脚本

我有3个PHP脚本

input.php:

<form id="input" action='data.php' method='post'> 
<select name="id"> 
<?php 

require_once('function.php'); 
$conn = connect(); 

$sql = "SELECT id,item FROM t1"; 
$results = mysqli_query($conn, $sql) or die($mysqli->error); 
//echo "<form action='data.php' method='post'>"; 
while($row = $results->fetch_assoc()){ 
echo "<option value='" . $row['id'] . "'>" . $row['item'] . "</option>"; 
} 
?> 

<input type='Submit' value='Auswahl bestätigen'/> 

</select> 

data.php

<form action= 'change.php' method='post'> 

<?php 

$id = $_POST ["id"]; 
$id = $mysqli->real_escape_string($id); 


require_once('function.php'); 
$conn = connect(); 


$sql = "SELECT * FROM t1 WHERE id='".$id."'"; 
//echo $sql; 
$results = mysqli_query($conn, $sql); 
$row = mysqli_fetch_array($results); 

echo "ID: <input type='number' name='id' value='" .$row['id']. "' readonly 
size='5'><br><br>"; 

echo "Beschreibung: <input type='text' name='beschreibung' 
value='".$row['description']."'><br><br>"; 

echo "Finder: <input type='text' name='finder' required 
value='".$row['contact']."' /><br><br>"; 

echo "Datum: <input type='date' name='datum' required 
value='".$row['date']."'> <br><br>"; 

echo "Ort: <input type='text' name='ort' required value='".$row['place']."'> 
<br><br>"; 

echo "Abgeholt?: <input type='radio' name='abgeholt' value='1' />Ja"; 
echo   "<input type='radio' name='abgeholt' value='0' 
checked>Nein<br><br>"; 

echo "Abholdatum: <input type='date' name='abholdatum' 
value='".$row['retrieve date']."'> <br><br>"; 

?> 
<input type='Submit' value='Eintrag ändern!' /><br><br> 
</form> 

和change.php:

<?php 
$id = $_POST ["id"]; 
$item = $_POST ["gegenstand"]; 
$description = $_POST ["beschreibung"]; 
$contact = $_POST ["finder"]; 
$date = $_POST ["datum"]; 
$place = $_POST ["ort"]; 
$retrieved = $_POST ["abgeholt"]; 
$retrieve_date = $_POST ["abholdatum"]; 


require_once('function.php'); 
$conn = connect(); 




$item = $conn->real_escape_string($item); 
$description = $conn->real_escape_string($description); 
$contact = $conn->real_escape_string($contact); 
$date = $conn->real_escape_string($date); 
$place = $conn->real_escape_string($place); 
$retrieved = $conn->real_escape_string($retrieved); 
$retrieve_date = $conn->real_escape_string($retrieve_date); 



$sql ="UPDATE t1 

SET description = '$description', contact = '$contact', date = '$date', 
place = '$place', retrieved = '$retrieved' , retrieve_date = 
'$retrieve_date' 
WHERE id = '$id'"; 

//echo $sql;   

if ($conn->query($sql) === TRUE) { 
echo "New record created successfully" . "<br>" . "<br>"; 
} else { 
echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 

?> 

所以我的问题:
这些脚本的工作,我能够改变我的分贝(MariaDB的) 项,但我想让他们被加载通过AJAX来提高我的网站的感觉(没有人喜欢3个重定向改变的东西)

我与jQuery的$ .load功能,但没有喜悦试过

<script type="text/javascript">                      

$(document).ready(function(){ 
$('#f1').load('input.php'); 
}); 
}); 
</script> 

所以我的问题是:
是否有可能加入这些脚本,以减少到最大。 1重定向,甚至更好地通过AJAX将它们集成到主html页面中?

PS:抱歉语法错误,英语不是我的母语

+0

阿贾克斯不仅仅是加载页面。 你应该开发一个单独的页面,它可以在没有页面重新加载的情况下进行ajax调用,以便将数据发布到服务器。 您不需要每次从服务器通过ajax加载新页面。 –

+0

您的混合操作mysqli和过程函数以及'$ _POST [“id”]'对SQL注入开放。 –

+1

好吧,既然你是新手,那么暂时放一个Ajax,看一下http://bobby-tables.com,了解SQL注入以及如何防止它们。现在,你的代码根本不安全,而且你很容易被注入。您的数据库可能会在几秒钟内被黑客入侵,而不需要对系统有更深入的了解。 – Twinfriends

回答

1

在许多其他问题..

$(document).ready(function(){ 
    $("#input").submit(function(event){// Bind to the submit event of our form 
    // Prevent default posting of form - put here to work in case of errors 
    event.preventDefault(); 

    // Serialize the data in the form (get form data) 
    var serializedData = $(this).serialize(); 

    // Fire off the request to /data.php 
    request = $.ajax({ 
     url: "/form.php", 
     type: "post", 
     data: serializedData 
    }); 

    // Callback handler that will be called on success 
    request.done(function (response, textStatus, jqXHR){ 
     // Log a message to the console 
     console.log("Hooray, it worked!"); 
    }); 

    // Callback handler that will be called on failure 
    request.fail(function (jqXHR, textStatus, errorThrown){ 
     // Log the error to console 
     console.error(
      "The following error occurred: "+ 
      textStatus, errorThrown 
     ); 
    }); 

    }); 
}); 

同时删除属性行动从形式&方法。不再需要了。

<form id="input" > 
<select name="id"> 
.... 

欲了解更多信息,请访问:JQuery Ajax

最佳