Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не получается переделать AJAX запрос с js на jQuery (https://javascript.ru/forum/jquery/65051-ne-poluchaetsya-peredelat-ajax-zapros-s-js-na-jquery.html)

Sokoljr 22.09.2016 12:24

Не получается переделать AJAX запрос с js на jQuery
 
есть функция, при нажатии на кнопку, отправляются комментарии на сервер, на чистом JavaScript работает, на jQuery не работает...

JS
function SubmitReviewForItem() {
    var submitReview = document.querySelector(".btnReview");
    submitReview.addEventListener("click", function () {
        var review = document.querySelector("#content").value;
        var star = document.getElementsByName('star');
        for (var i = 0; i < star.length; i++) {
            if (star[i].type == "radio" && star[i].checked) {
                var rate = star[i].value
            }

        }
        var reviews1 = "rate=" + rate + "&text=" + review;
        if (document.querySelector(".Item1").innerHTML === "product1") {
            var xhrPostReviewProd1 = new XMLHttpRequest();
            xhrPostReviewProd1.open('POST', 'http://smktesting.herokuapp.com/api/reviews/1', true);
            xhrPostReviewProd1.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            xhrPostReviewProd1.setRequestHeader('Accept', "application/json");
            xhrPostReviewProd1.setRequestHeader('Authorization', 'Token ' + jsonProductLogin.token);
            xhrPostReviewProd1.onreadystatechange = function () {
                if (this.readyState === 4) {
                    xhrPostReviewProd1.onload = function () {
                        document.querySelector("#content").value = "";
                    }
                }
            };
            xhrPostReviewProd1.send(reviews1);
        } 
    })
}




jQuery

по поводу нахождения селекторов пока роли не играет, просто не менял еще на jQuery

function SubmitReviewForItem() {
	var submitReview = document.querySelector(".btnReview");
    submitReview.addEventListener("click", function () {
        var review = document.querySelector("#content").value;
        var star = document.getElementsByName('star');
        for (var i = 0; i < star.length; i++) {
            if (star[i].type == "radio" && star[i].checked) {
                var rate = star[i].value
            }
		}
		var reviews1 = {
	        "rate=": rate,
            "text=": review
	    };
		jsonStr = JSON.stringify(reviews1);
        if (document.querySelector(".Item1").innerHTML === "product1") {
        	$.ajax ({
	            beforeSend: function(xhr) {
	            	xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
					xhr.setRequestHeader('Accept', 'application/json');
				    xhr.setRequestHeader('Authorization', 'Token ' + jsonProductLogin.token);
				},
				type: "POST",
	            url: urlMain + "api/reviews/1",
	            data: jsonStr,
	            processData: true,            
	            dataType: "json",
	            success: function (data) {
                        document.querySelector("#content").value = "";
                }
            });
        } 
    })
}

dd_smol 22.09.2016 14:46

Если не запутался то как то так.
jQuery(function ( $ ) {
	$('.btnReview').click(function ( e ) {
		$('.Item1').text() === 'product1' && 
		$.ajax({
			type: 'POST',
			url: 'http://smktesting.herokuapp.com/api/reviews/1',
			data: {
				'rate': $(':radio[name=star]:checked').val(),
				'text': $('#content').val()
			},
			headers: {
				'Authorization': 'Token ' + jsonProductLogin.token
			},
			success: function () {
				$('#content').val('');
			}
		});

		return false;
	});	
});

Sokoljr 22.09.2016 15:22

dd_smol,
Спасибо, помогло


Часовой пояс GMT +3, время: 08:14.