Получить данные 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, время: 14:53. |