У меня есть этот код:
$.post('http://localhost/test_zone/index.php/blog/new_post', { image_codes: images, info: fieldData, post_body: body },
function(data){
if (data.success) {
if(data.error != ''){
alert(data.error);
}
else {
$('#preview_wrapper').css('display','none').html(data.postHTML).show(1000);
$('#array_store').html(data.dataArray);
}
}
else {
alert('Sorry, an error occurred. No response from server.');
}
}
,'json');
Как видите, я собираю два бита данных - postHTML и dataArray - с помощью функции post ajax. Я хочу поместить dataArray в переменную. Я читал похожие вопросы, и я считаю, что решение состоит в том, чтобы использовать «async: false» - заставляя функцию ждать данные и вставлять их в переменную перед продолжением. Поэтому у меня есть несколько вопросов, касающихся этого:
Во-первых, как вы устанавливаете «async: false», используя сокращение jquery $ .post, как я делаю выше, а не $ .ajax ({type: 'POST'})? Является ли это возможным? Это было бы полезно знать, но я нигде не могу разобраться или найти ответ.
Я слышал много негативных комментариев об использовании 'async: false'. Вы бы порекомендовали это? Если нет, то как я могу просто сохранить строку данных на странице для дальнейшего использования? На данный момент, как вы можете видеть, я установил данные для вставки в div (для отображения: нет), что, по меньшей мере, кажется мне не идеальным.
Почему функция не ожидает вставки данных в переменную, но когда вы устанавливаете ее для вставки данных в элемент на странице с помощью .html (), она работает? Я думаю, это как открыть дверь для строки данных, чтобы просто пролить на страницу в свое время ..? Но почему эта методология не может применяться для вставки данных в переменную - почему дверь также не может быть открыта для переменной? (Если вы понимаете, о чем я!).
Извините за довольно длинный вопрос - любые ответы или частичные ответы на вопросы выше будут очень благодарны. Благодаря.
РЕДАКТИРОВАТЬ: вот мой полный код (возможно, вы можете игнорировать все биты сбора данных, но я все равно опубликую партию) -
$('#submit').click(function(){
$('#input_table').hide(1000);
if($('.image_info').length){
var images = [];
$.each($('.image_info'), function(img_count) {
var img_code = $(this).attr('class').split(' ').slice(-1);
images.push('"' + img_count + '"' + ':' + '"' + img_code + '"');
img_count++;
});
images = '{' + images + '}';
}else {
var images = 'none';
}
var editor = CKEDITOR.instances.editor1;
var body = editor.getData();
body = clean(body);
var fieldData = [];
var cleanValue ='';
$.each($('.field'), function() {
cleanValue = clean($(this).val());
fieldData.push('"' + $(this).attr('id') + '"' + ':' + '"' + cleanValue + '"');
});
fieldData = '{' + fieldData + '}';
$.post('http://localhost/test_zone/index.php/blog/new_post', { image_codes: images, info: fieldData, post_body: body },
function(data){
if (data.success) {
if(data.error != ''){
alert(data.error);
}
else {
$('#preview_wrapper').css('display','none').html(data.postHTML).show(1000);
$('#array_store').html(data.dataArray);
}
}
else {
alert('Sorry, an error occurred. No response from server.');
}
}
,'json');
});