Получить данные JSON без jQUERY
Здравствуйте. :)
Как получить данные формата json по определенному url без использования jQuery? Сами данные генерируются и выдаются в виде массива объектов по заданному url. Вот его структура: [{"product_name":"\u0411\/\u0443 \u0414\u0432\u0438\u0433\u0430\u0442\u0435\u043b\u044c Fiat Doblo 1.9 JTD","product_id":"3","prices":45,"images":["images\/stories\/virtuemart\/product\/doblo-1.9-jtd.jpg","images\/stories\/virtuemart\/product\/fiat-doblo-1.92.jpg"]},{"product_name":"\u0411\u0430\u043c\u043f\u0435\u0440\u044b Ford Fiesta","product_id":"4","prices":58,"images":["images\/stories\/virtuemart\/product\/01-perednyi-bamper-fiesta-2003-2006.jpg","images\/stories\/virtuemart\/product\/02-perednyi-bamper-fiesta-2008.jpg","images\/stories\/virtuemart\/product\/03-zadnyyi-bamper-fiesta-2006-2008.jpg"],"product_desc":"\u0415\u0441\u0442\u044c\u00a0\u0411\u0430\u043c\u043f\u0435\u0440\u044b \u0434\u043b\u044f Ford Fiesta, \u043f\u0435\u0440\u0435\u0434\u043d\u0438\u0439, \u0437\u0430\u0434\u043d\u0438\u0439. 2003-2008 \u0433\u043e\u0434."}] Этот массив хочу получить в js и по очереди каждый элемент заполнить на другом сайте. Заполнить данные по форме, нажать кнопку сабмит и опять открыть страницу формы, заполнить ну т.д Помогите/подскажите как это реализовать? |
var request = new XMLHttpRequest(); request.open('GET', 'путь/до/json.json'); request.onreadystatechange = function(e) { if (this.readyState = 4) { if (this.status == 200) { var response = JSON.parse(this.responseText); // тут ченибудь делаем с объектом } else { // тут сообщаем о сетевой ошибке } } } request.send(null); |
Цитата:
if (this.readyState = 4)я добавил еще одно "=" иначе ругается на ошибку "uncaught syntaxerror unexpected end of input repeated 2 items". Буду теперь пробовать дальше двигаться. О своих результатах сообщу позже когда сделаю уже то что в финальном результате будет. :) |
Подскажите еще такое:
после клика нужно дождаться загрузки элементов. Как выполнить ожидание без установки таймера? |
Цитата:
|
У меня так не получается. Не находит элемент который не загрузился еще.
С таймером работает в норме но мне не хочется его использовать т.к это замедляет общий процесс и не факт что за этот период времени уложится загрузка. На сайте заполняю форму, при выборе категории выполняется клик, начинает подгружаться список категорий и уже с загруженного списка мне нужно выбрать элементы. |
Код показывай.
|
console.log("Start"); var request = new XMLHttpRequest(); request.open('GET', 'http://localhost/avtokolya/market/l_json.php'); request.onreadystatechange = function(e) { if (this.readyState == 4) { if (this.status == 200) { var response = JSON.parse(this.responseText); var str = response['1']; //alert(str.images); if ('http://slando.ua/post-new-ad/'==window.location.href){ console.log("slando"); window.onload = function(){ //document.getElementById("category-breadcrumb-container").addEventListener( 'click'); var element = document.evaluate( '//*[@id="category-breadcrumb-container"]/dl/dt/a',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; element.click(); // первый аргумент - функция function second_passed() { document.getElementById('cat-3').click(); var element = document.evaluate( '//*[@id="category-3"]/div[2]/div[2]/div/ul/li[7]/a',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; element.click(); var element = document.evaluate( '//*[@id="category-111"]/div[2]/div[2]/div/ul/li[1]/a',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; element.click(); var element = document.evaluate( '//*[@id="targetid_private_business"]/dd/ul/li[3]/a',document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue; element.click(); } setTimeout(second_passed, 2000) //slando document.getElementById('add-title').value=str.product_name; document.getElementById('add-description').value=str.product_desc; } } } else {alert("Сетевая ошибка..."); } } } request.send(null); console.log("end"); |
Цитата:
|
Код подгрузки категорий находится на самом сайте, можете посмотреть сами. Или может я не правильно понял вас?
|
Часовой пояс GMT +3, время: 15:52. |