[英]Ajax call not getting a success response
我們有2個文本字段。 我們嘗試通過ajax調用發布user_Name和Password。
我們已經使用了PHP服務,用戶名和密碼確實成功保存到數據庫中。
但是我們沒有得到任何成功或失敗的回應。
代碼:
PHP:
if(isset($_GET['ecovauserName']) && isset($_GET['ecovauserage']) ){
$ecovauserName = $_GET['ecovauserName'];
$ecovauserage = $_GET['ecovauserage'];
$sql = "SELECT ecovauserName,ecovauserage FROM ecovauserinfo WHERE ecovauserName = '" . $ecovauserName . "' and ecovauserage = '" . $ecovauserage . "'";
$query = mysql_query($sql);
if (mysql_num_rows($query) > 0)
{
echo "fail to post";
}
else
{ echo("Entered into DB inserting the values");
$insert = "INSERT INTO ecovauserinfo (ecovauserName,ecovauserage)
VALUES ('" . $ecovauserName . "','" . $ecovauserage . "')";
$query = mysql_query($insert);
echo $insert;
if ($query)
{
echo "EventFile Successfully stored";
}
else
{
echo "Insert failed";
}
}
}
Ajax電話: -
$.ajax({
url:'http://192.168.3.134:8080/ekova/postevent.php',
type:'POST',
data:{ecovauserName :username,ecovauserage:password},
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
success:function(responsive){
alert(responsive);
},
error:function(w,t,f){
console.log(w+' '+t+' '+f);
}
});
上面的代碼工作正常。 用戶名和密碼已成功存儲在DB中。 但我們需要成功地做出失敗的回應。
我的成功:沒有調用函數,所以我的警報框永遠不會運行通知我成功。
請指導我在代碼中出現的問題。
數據類型應為“json”而不是“jsonp”
我建議您使用“text”而不是“json”,因為您返回的是普通文本結果而不是json編碼數據。
您可以嘗試刪除行dataType:“jsonp” - 這已經取得了一些成功。
看到這篇文章: Ajax成功事件無效
編輯 - 嘗試將基本的console.log語句置於成功和失敗狀態,只是為了查看是否有任何命中。
$.ajax({
url:'http://192.168.3.134:8080/ekova/postevent.php',
type:'POST',
data:{ecovauserName :username,ecovauserage:password},
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
success:function(){
console.log('in success');
},
error:function(){
console.log('in error');
}
});
檢查您是否收到錯誤:
error: function(xhr, status, error) {
var error1 = eval("(" + xhr.responseText + ")");
console.log(error1.Message);
console.log(geturl.getAllResponseHeaders());
alert("error!"+ geturl.getAllResponseHeaders());
}
作為示例,為什么不使用呼叫返回的狀態代碼:
$.ajax({
url:'http://192.168.3.134:8080/ekova/postevent.php',
type:'POST',
data:{ecovauserName :username,ecovauserage:password},
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
statusCode: {
404: function () {
//error
},
200: function (data) {
//response data
}
}
});
在你的php調用中返回一個json_encode
響應,如下所示:
echo json_encode(array('status' => 'in success'));
您似乎正在使用跨域和jsonp進行查詢。
所以,在你的PHP代碼中,你必須返回一個jsonp格式:
$response = array('success' => false, 'message' => '');
if (isset($_GET['ecovauserName']) && isset($_GET['ecovauserage'])) {
$ecovauserName = $_GET['ecovauserName'];
$ecovauserage = $_GET['ecovauserage'];
$sql = "SELECT ecovauserName,ecovauserage FROM ecovauserinfo WHERE ecovauserName = '" . $ecovauserName . "' and ecovauserage = '" . $ecovauserage . "'";
$query = mysql_query($sql);
if (mysql_num_rows($query) > 0) {
$response['message'] = 'fail to post';
} else {
$insert = "INSERT INTO ecovauserinfo (ecovauserName,ecovauserage) VALUES ('" . $ecovauserName . "','" . $ecovauserage . "')";
$query = mysql_query($insert);
if ($query) {
$response['message'] = 'EventFile Successfully stored';
$response['success'] = true;
} else {
$response['message'] = 'Insert failed';
}
}
}
// The header is for telling that you are sending a json response
header('content-type: application/json; charset=utf-8');
// formatting a response as jsonp format.
echo $_GET['callback'] . '(' . json_encode($response) . ')';
在你的javascript中:
$.ajax({
url: 'http://192.168.3.134:8080/ekova/postevent.php',
type: 'POST',
data: {ecovauserName: username, ecovauserage: password},
contentType: "application/json; charset=utf-8",
dataType: "jsonp",
success: function (response) {
alert(response.message);
},
error: function() {
console.log('error');
}
});
有關更多信息, 請訪問http://www.geekality.net/2010/06/27/php-how-to-easily-provide-json-and-jsonp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.