zerofx
@zerofx
freelancer

Как вернуть значение которое передал ajax?

Привет всем, у меня проблема, проблема с выводом данных переданные через ajax.
Суть задачи очень проста - по клику взять дата атрибут - ID поста, и передать его в функцию которая есть в блоке модального окна, и выводит его контент.
ID через ajax - я передал, но как его вставить в модальное окно, точнее подставить ID в переменную цикла, которая отвечает за номер поста понимаю, не получается.

Подскажите как быть.

Также заметил что окно с контентом открывается быстрее ... чем в консоли приходит ответ о том, что ID посту передалось.

код ajax на сервер:

$(document).ready(function() {
	$('.mod_box, .test').click(function() {
		var data_atr = $(this).data('pid');
		console.log(data_atr);
	    $.ajax({
	        type: "POST",
	        url: url_site + "/wp-admin/admin-ajax.php",
	        data: {
	            action : 'get_data',
	            pid: data_atr
	        },
	        success: function (response) {
	            console.log('AJAX response : ',response);
	        },
	        error: function (error) {
	            console.log('AJAX Error : ',error);
	        }
	    });
    });
});


WP функция:

$url_site = get_site_url();

function ajx_get_data() {
	// $url_site = get_site_url();
	$p_id = absint( $_POST['pid'] );
	$response = [
		'success' => true,
		'data' => [
			'html' => $p_id
		]
	];
	echo json_encode($response);
	die();
}


/*Ajax  WP Func*/
add_action( 'wp_ajax_get_data',        'ajx_get_data' ); 
add_action( 'wp_ajax_nopriv_get_data', 'ajx_get_data' );
  • Вопрос задан
  • 1018 просмотров
Пригласить эксперта
Ответы на вопрос 2
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Правильно вам говорят. У вас сейчас вызов модалки и аякс-запрос - совершенно никак не связанные события, выполняющиеся независимо друг от друга. Даже если в коде вызов модалки у вас идет после аякс-запроса, модалка выскочит раньше получения ответа. Выполняете запрос, а уже в нем, когда у вас success - открываете модалку и передаете в нее полученное (на этот момент - точно полученное) значение. Аякс асинхронный, то есть javascript-движок запрос отправил и пошел выполнять следующий код (в вашем случае - открывать модалку) не дожидаясь ответа.
Ответ написан
@jekanok
вот так если json возвращает я принемаю     			$(document).on("click",".delete_ads", function(){
                    
			var id = $(this).attr("iid");
            var uid = $('#balance').attr('user');
                    
				$.ajax({
                    type: "POST",  
                    data: {"uid": uid, "id": id},
					url: "./lib/delete_ads.php",
					cache: false,
					success: function(data){
    			datas = JSON.parse(data);
			
			 $.each(datas, function(index, data){
				
                
 });
                        if (datas.true == "true"){
                            
						$('[sss="'+id+'"]').remove();
						
  		                }
                if(datas.true == "false"){
				$("#mesegee").text(datas.echo).show().delay(1500).fadeOut(800);
	
		
			}
			    }
                    
				});
			return false;
		});


а вот так если обычные данные
$(document).on("click",".dellet_img", function(){
        var user = $('#balance').attr('user');
        var ad_id = $(this).attr("linkid");
        var type_job = window.location.hash.substr(1);
        $.ajax({
            type: "POST",
            url: "./lib/dell.php",
            data: {"user":user, "ad_id":ad_id,"type_job":type_job},
            cache: false,
            success: function(response){
                if(response == "true"){
                    $('[iids="'+ad_id+'"]').remove().hide(3000);
                }
            }
        });
		return false;
	});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы