gpt4 book ai didi

javascript - ajax 响应数据未定义

转载 作者:行者123 更新时间:2023-11-29 19:04:25 26 4
gpt4 key购买 nike

我对 ajax post submit 有问题这是我的脚本

function postad(actionurl) {
if (requestRunning) return false ;

if (! $("#editadform").valid()) {
validator.focusInvalid();
return false ;
}

$('#ajxsave').show() ;
requestRunning = true ;
var postData = $('#editadform').serializeArray();
$.ajax(
{
url : actionurl,
type: "POST",
data : postData,
success:function(data, textStatus, jqXHR)
{
$('#diverrors').html(data.errors) ;
$('#divalerts').html(data.alerts) ;

if (data.status=='success') { alert(data.status);
$('#siteid').val(data.siteid) ;
if ($('#adimager').val())
$('#divlmsg').html(data.alertimage) ;
$('#editadform').submit() ;

} else {

$('#ajxsave').hide() ;
}
},
error: function(jqXHR, textStatus, errorThrown)
{
$('#ajxsave').hide() ;
},
complete: function() {
requestRunning = false;
}
});

$('.btn').blur() // remove focus
return false ;
}

这适用于 if (textStatus=='success') {

但是当操作失败时,alert(data.status) 显示 Undefined。

使用 FireBug,我可以看到数据已正确返回。为什么 data.status 是“未定义”?

最佳答案

如果您没有在 jQuery 中指定 $.ajax() 调用的 dataType 字段,它会将响应格式化为纯文本。您的代码的解决方法是将 dataType: "JSON" 包含到您的 $.ajax() 参数中,或者在您的 success 函数,使用以下内容将纯文本响应解析为 JSON 对象:

data = JSON.parse(data); // You can now access the different fields of your JSON object

更新:

yes i have not status field in action url, how to add data status field in php code?

在创建旨在返回 JSON 数据的 PHP 脚本时,您首先需要构建一个数组,然后将其编码为 JSON。

因此,假设您有一个 PHP 脚本要么成功并生成一些您放入 $data 变量的数据,要么失败,那么可以采用以下样式:

<?php
// ^^ Do your PHP processing here
if($success) { // Your PHP script was successful?
$response = array("status" => "success!", "response" => $data);
echo json_encode($response);
}
else {
$reponse = array("status" => "fail", "message" => "something went wrong...");
echo json_encode($response);
}
?>

关于javascript - ajax 响应数据未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44095175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com