JQuery Ajax Json 响应无效
JQuery Ajax Json Response Does not Work
表格部分:
<script type="text/javascript" src="js/aboneol.js"></script>
<h4>haberdar olun</h4>
<div class="news_letter">
<span id="aboneolhata"></span>
<form action="" method="post" onsubmit="return false;" id="abone">
<input type="text" name="email" placeholder="E-posta adresiniz" />
<input type="submit" onclick="$.aboneol();" value="abone ol" />
</form>
</div>
Jquery 部分:
$.aboneol = function(){
var deger = $("form#abone").serialize();
$.ajax({
url: "aboneol.php",
data: deger,
dataType: "json",
type: "post",
success: function(response){
if(response.error == 0){
$(".news_letter").html(response.message);
}else{
$("#aboneolhata").html(response.message);
}
}
});
}
这里是 php 部分:
<?php
$email = $_POST["email"];
$email = trim($email);
if(empty($email)){
$response["error"] = 1;
$response["message"] = "Boş Bırakamazsınız..";
}else if(filter_var($email, FILTER_VALIDATE_EMAIL) === false){
$response["error"] = 1;
$response["message"] = "Hatalı E-posta..";
}else{
require "database.php";
$pdo = Database::connect();
$sql = "INSERT INTO aboneler (email) VALUES (:email)";
$q = $pdo->prepare($sql);
$q->execute(array(
':email'=>$email,
));
$response["error"] = 0;
$response["message"] = $email;
}
echo json_encode($response);
?>
Ajax发邮件给php,http响应码是200。但是success方法不起作用。此外,我在成功方法中看不到任何 json 响应。如何解决这个问题呢?
您应该将响应 content-type 设置为 application/json
。如果你没有设置它,你可以在收到响应时,从中制作 json object (或字典)。
所以:
1 - 设置 php 响应 header:
header("Content-type: application/json");
2 - 或者如果您没有在 php 中设置 header,则在 javascript 中解析响应:
success: function(response){
response = JSON.parse(response);
if(!response['error']){
...
表格部分:
<script type="text/javascript" src="js/aboneol.js"></script>
<h4>haberdar olun</h4>
<div class="news_letter">
<span id="aboneolhata"></span>
<form action="" method="post" onsubmit="return false;" id="abone">
<input type="text" name="email" placeholder="E-posta adresiniz" />
<input type="submit" onclick="$.aboneol();" value="abone ol" />
</form>
</div>
Jquery 部分:
$.aboneol = function(){
var deger = $("form#abone").serialize();
$.ajax({
url: "aboneol.php",
data: deger,
dataType: "json",
type: "post",
success: function(response){
if(response.error == 0){
$(".news_letter").html(response.message);
}else{
$("#aboneolhata").html(response.message);
}
}
});
}
这里是 php 部分:
<?php
$email = $_POST["email"];
$email = trim($email);
if(empty($email)){
$response["error"] = 1;
$response["message"] = "Boş Bırakamazsınız..";
}else if(filter_var($email, FILTER_VALIDATE_EMAIL) === false){
$response["error"] = 1;
$response["message"] = "Hatalı E-posta..";
}else{
require "database.php";
$pdo = Database::connect();
$sql = "INSERT INTO aboneler (email) VALUES (:email)";
$q = $pdo->prepare($sql);
$q->execute(array(
':email'=>$email,
));
$response["error"] = 0;
$response["message"] = $email;
}
echo json_encode($response);
?>
Ajax发邮件给php,http响应码是200。但是success方法不起作用。此外,我在成功方法中看不到任何 json 响应。如何解决这个问题呢?
您应该将响应 content-type 设置为 application/json
。如果你没有设置它,你可以在收到响应时,从中制作 json object (或字典)。
所以:
1 - 设置 php 响应 header:
header("Content-type: application/json");
2 - 或者如果您没有在 php 中设置 header,则在 javascript 中解析响应:
success: function(response){
response = JSON.parse(response);
if(!response['error']){
...