Получить данные 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"); |
Цитата:
|
Код подгрузки категорий находится на самом сайте, можете посмотреть сами. Или может я не правильно понял вас?
|
А остальные вопросы? Если это расширение для хрома, то вот это должно помочь: https://developer.chrome.com/extensions/webRequest.html
|
Это в некоторой степени расширение и не расширение.
Для ясности это для фрейма подгружаемого с сервера БД товаров которые планирую заполнять на специализированные сайты, распознавать рубрику и т.д. В данном случае приходится работать как с расширением для теста. ну вопросов в общем думаю не мало еще будет, хотя если это вас затрудняет можете не отвечать... |
Для ясности лучше скажи твой ли это фрейм, то есть можешь ли ты добавлять или менять свой код во фрейме.
И ясней опиши че куда ты хочешь заполнять и что значит "распознавать рубрику". Скрипт, который ты пишешь только для твоего удобства или он должен работать у посетителей какого-то твоего сайта? |
danik.js,
добавляй смайлы, а то люди думают что ты на них ругаешся! :haha: |
Я наконец-то справился с заполнением формы;)
Только вот один нюанс еще возник, как выбрать фото для загрузки? Там типа кнопка обзор и выбираешь несколько фото на компу которые нужно загрузить. Вот код кнопки: <li id="add-file-1" class="fleft empty rel first-child {slot: 1}" style="z-index: 0;"> <div class="br5"> <a href="javascript:void(0);" class="block" title="Добавить фото"><span class="icon margin0_a rel add2 block">Добавить фото</span></a> </div> </li> |
strongest,
<input type = "file"> |
Извините, я имел в виду средствами JavaScript,чтобы скрипт зная расположение файла сам заполнил/выбрал файл которых может быть несколько.
Спасибо:) |
Просветите, т.е. можно соединиться с сервером и получить данные без вывешивания всего этого на сервер приложений (открыв файл локально, например в браузере)?
|
Часовой пояс GMT +3, время: 18:08. |