Почему я не могу печатать сообщения об ошибках в ответе AJAX?

У меня следующий HTML-код:

<a href="#" id="promotion_status_1">
<button type="button" class="btn btn-default brmodalbtn" data-toggle="modal" data-target="#BrandImageModal" id="1">On</button>
</a>

<div class="container">
<div class="modal fade" id="BrandImgeModaal">
<div class="modal-dialog">
<div class="modal-content">
<form id="form" enctype="multipart/form-data" role="form">
<input type="text" class="form-control" name="brand_id" id="brand_id" value="{$data.id}">
<input type="text" name="admin_url" id="admin_url" value="http://localhost/abc.com">
<input type="text" name="op" value="upload_brand_image">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">Brand Image</h4>
</div>
<div class="modal-body">
<div id="messages"></div>
<input type="file" name="file" id="file">
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</form>
</div>
</div>
</div>
</div>

JQuery AJAX код:

$('#form').submit(function(e) {
var form = $(this);
var formdata = false;
if(window.FormData) {
formdata = new FormData(form[0]);
}
var formAction = form.attr('action');

$.ajax({
type        : 'POST',
url         : 'manufacturers.php',
cache       : false,
data        : formdata ? formdata : form.serialize(),
//data      : formdata ? formdata : form.serialize() + '&' + $.param({'op':'upload_brand_image'}),
contentType : false,
processData : false,

success: function(response) { alert(response); return;
if(response.error == 1) {
$('#BrandImageModal').modal('hide');
} else {
$('#messages').addClass('alert alert-danger').text(response);
}
},
dataType:"JSON"});
e.preventDefault();
});

PHP-код:

$request = $_REQUEST ;
switch( $op ) {
case "upload_brand_image":

$ret = $objManufacturer->UploadBrandImage($request, $_FILES, $allowed_image_extension, $manuf_error_messages);

if(!$ret) {
$error_msg = $objManufacturer->GetAllErrors();

$response = array(
"error" => 1,
"error_message" => $error_msg
);

echo(json_encode($response));
} else {
if(!empty($_FILES['file']['name'])) {
upload_file_now( $_FILES['file'], $brand_image_path, $t, $brand_name, $ext);
}
}
die;
break;
}

$error_msg массив содержит следующее содержимое:

Array
(
[domain_id] => Please select domain
[brand_name] => Brand name can't be blank
[brand_name_invalid] => Brand name is not valid, it should be alphabetic
[email] => Brand email can't be blank
[email_invalid] => Brand email is not valid
[brand_image] => Brand image can't be blank
[brand_image_format] => Please upload brand image in a proper format
[brand_image_size] => Brand image size is greater than 5 MB
[brand_image_dimesnions] => Only upload brand image having dimensions >= 940 X 370 px
[details] => Brand details can't be blank
)

Я не могу напечатать сообщения, содержащиеся в этом массиве, в режиме начальной загрузки.

Где я делаю не так? Кто-нибудь, пожалуйста, помогите мне в этом отношении?

Спасибо

-3

Решение

просто измените код успеха …

$('#form').submit(function(e) {
var form = $(this);
var formdata = false;
if(window.FormData) {
formdata = new FormData(form[0]);
}

var formAction = form.attr('action');
$.ajax({
type        : 'POST',
url         : 'manufacturers.php',
cache       : false,
data        : formdata ? formdata : form.serialize(),
//data      : formdata ? formdata : form.serialize() + '&' + $.param({'op':'upload_brand_image'}),
contentType : false,
processData : false,

success: function (response) {
alert('successful : ' + response);
},
error: function(data, errorThrown)
{
alert('request failed :'+errorThrown);
}
dataType:"JSON"});
e.preventDefault();
});
0

Другие решения

Помните, что данные json передаются с сервера на броузер в виде текста, чтобы использовать его разумно, вам необходимо преобразовать его в правильный объект JSON, используя $.parseJSON()

Так что постарайтесь

success: function(response) {
response = $.parseJSON(response);
if(response.error == 1) {

Также современные браузеры имеют связанный с ними отладчик javascript. Привыкайте к нему. Затем вы можете установить точку останова в первой строке success: метод и просмотреть содержимое возвращаемых данных, а также почти все остальное, что находится в области видимости.

0

По вопросам рекламы [email protected]