我们有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 Call: -
$.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中。但我们需要成功地做出失败的回应。
我的成功:没有调用函数,所以我的警报框永远不会运行通知我成功。
请指导我代码中的错误。
答案 0 :(得分:1)
您可以尝试删除行dataType:" jsonp" - 那已经取得了一些成功。
请参阅此帖子:Ajax success event not working
编辑 - 尝试将基本的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());
}
答案 1 :(得分:1)
为什么不使用通话返回的状态代码,例如:
$.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
}
}
});
答案 2 :(得分:0)
数据类型应为“json”而不是“jsonp”
我建议您使用“text”而不是“json”,因为您要返回普通文本结果而不是json编码数据。
答案 3 :(得分:0)
在你的php调用中返回json_encode
响应,如下所示:
echo json_encode(array('status' => 'in success'));
答案 4 :(得分:0)
您似乎正在使用跨域和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
的更多信息