我有一张登记表,正在使用$。Ajax来提交。
这是我的AJAX请求:
$(document).ready(function() {
$("form#regist").submit(function() {
var str = $("#regist").serialize();
$.ajax({
type: 'POST',
url: 'submit1.php',
data: $("#regist").serialize(),
dataType: 'json',
success: function() {
$("#loading").append("<h2>you are here</h2>");
}
});
return false;
});
});
在我的submit1.php文件中,我检查了数据库中字段电子邮件地址和用户名的存在。
我希望显示一个错误消息,如果这些值存在而不刷新页面。
我如何将此添加到我的AJAX请求的成功回调?
虽然这个问题已经解决了,但我还是希望它能帮助到其他人。
我犯了一个错误,试图直接使用这样的函数(success: OnSuccess(productID))。但是你必须先传递一个匿名函数:
function callWebService(cartObject) {
$.ajax({
type: "POST",
url: "http://localhost/AspNetWebService.asmx/YourMethodName",
data: cartObject,
contentType: "application/x-www-form-urlencoded",
dataType: "html",
success: function () {
OnSuccess(cartObject.productID)
},
error: function () {
OnError(cartObject.productID)
},
complete: function () {
// Handle the complete event
alert("ajax completed " + cartObject.productID);
}
}); // end Ajax
return false;
}
如果你不使用匿名函数作为包装器,即使web服务返回异常,OnSuccess也会被调用。
我尝试删除dataType行,但它没有为我工作。我通过使用“complete”而不是“success”作为回调函数来解决这个问题。成功回调仍然失败在IE,但因为我的脚本运行和完成无论如何,这是我所关心的。
$.ajax({
type: 'POST',
url: 'somescript.php',
data: someData,
complete: function(jqXHR) {
if(jqXHR.readyState === 4) {
... run some code ...
}
}
});
在jQuery 1.5中你也可以这样做。
var ajax = $.ajax({
type: 'POST',
url: 'somescript.php',
data: 'someData'
});
ajax.complete(function(jqXHR){
if(jqXHR.readyState === 4) {
... run some code ...
}
});
我试图从控制器返回字符串,但为什么控制返回错误块不成功的ajax
var sownum="aa";
$.ajax({
type : "POST",
contentType : 'application/json; charset=utf-8',
dataType : "JSON",
url : 'updateSowDetails.html?sownum=' + sownum,
success : function() {
alert("Wrong username");
},
error : function(request, status, error) {
var val = request.responseText;
alert("error"+val);
}
});
添加'error'回调函数(就像'success'一样):
$.ajax({
type: 'POST',
url: 'submit1.php',
data: $("#regist").serialize(),
dataType: 'json',
success: function() {
$("#loading").append("<h2>you are here</h2>");
},
error: function(jqXhr, textStatus, errorMessage){
console.log("Error: ", errorMessage);
}
});
以我为例,我在控制台看到:
Error: SyntaxError: Unexpected end of JSON input
at parse (<anonymous>), ..., etc.
我遇到了同样的问题,我用这种方法解决了它:
我的ajax:
event.preventDefault();
$.ajax('file.php', {
method: 'POST',
dataType: 'json',
contentType: 'application/json',
data: JSON.stringify({tab}),
success: function(php_response){
if (php_response == 'item')
{
console.log('it works');
}
}
})
好的。问题不在于json,而在于php响应。
之前:我的php回答是:
echo 'item';
现在:
$variable = 'item';
echo json.encode($variable);
现在我的成功工作。
PS.如果有什么地方不对,我很抱歉,但这是我在这个论坛上的第一个评论:)