要使用jQuery发出Ajax请求,您可以通过以下代码执行此操作。
HTML:
<form id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
<!-- The result of the search will be rendered inside this div -->
<div id="result"></div>
JavaScript:
方法一
/* Get from elements values */
var values = $(this).serialize();
$.ajax({
url: "test.php",
type: "post",
data: values ,
success: function (response) {
// You will get response from your PHP page (what you echo or print)
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
方法二
/* Attach a submit handler to the form */
$("#foo").submit(function(event) {
var ajaxRequest;
/* Stop form from submitting normally */
event.preventDefault();
/* Clear result div*/
$("#result").html('');
/* Get from elements values */
var values = $(this).serialize();
/* Send the data using post and put the results in a div. */
/* I am not aborting the previous request, because it's an
asynchronous request, meaning once it's sent it's out
there. But in case you want to abort it you can do it
by abort(). jQuery Ajax methods return an XMLHttpRequest
object, so you can just use abort(). */
ajaxRequest= $.ajax({
url: "test.php",
type: "post",
data: values
});
/* Request can be aborted by ajaxRequest.abort() */
ajaxRequest.done(function (response, textStatus, jqXHR){
// Show successfully for submit message
$("#result").html('Submitted successfully');
});
/* On failure of request this function will be called */
ajaxRequest.fail(function (){
// Show error
$("#result").html('There is error while submit');
});
的.success()
,.error()
和.complete()
回调弃用的的jQuery 1.8。要准备的代码为他们的最终消除,使用.done()
,.fail()
和.always()
来代替。
MDN: abort()
。如果请求已经发送,则此方法将中止请求。
因此,我们已经成功发送了一个Ajax请求,现在该将数据抓取到服务器了。
的PHP
在Ajax调用(type: "post"
)中发出POST请求时,我们现在可以使用$_REQUEST
或$_POST
:
$bar = $_POST['bar']
您也可以通过任一方法查看POST请求中的内容。顺便说一句,确保$_POST
已设置。否则,您将得到一个错误。
var_dump($_POST);
// Or
print_r($_POST);
然后您将一个值插入数据库。确保您正在敏感或逃避在进行查询之前,所有请求(无论您是执行GET还是POST)。最好是使用准备好的语句。
而且,如果您要将任何数据返回到页面,都可以通过如下所示的方式回显该数据。
// 1. Without JSON
echo "Hello, this is one"
// 2. By JSON. Then here is where I want to send a value back to the success of the Ajax below
echo json_encode(array('returned_val' => 'yoho'));
然后您可以像这样获得它:
ajaxRequest.done(function (response){
alert(response);
});
有两种速记方法。您可以使用以下代码。它执行相同的工作。
var ajaxRequest= $.post("test.php", values, function(data) {
alert(data);
})
.fail(function() {
alert("error");
})
.always(function() {
alert("finished");
});