Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: GET запрос JSON

Если зайти по ссылке
то виден json файл, однако, когда я пытаюсь сделать get запрос, у меня вылетает ошибка. Как мне ее обойти?

Код Javascript
1
2
3
4
5
6
7
8
    $.ajax({
        type: "GET",
        dataType: "json",
        url: "https://www.waze.com/row-rtserver/web/TGeoRSS?ma=600&mj=100&mu=100&left=23.9932222366333&right=24.25675678253174&bottom=56.92814456026209&top=56.974952156297334,
        success: function (json) {
            $('#waze_json').innerHTML = json;
        }
    });
XMLHttpRequest cannot load . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:2016' is therefore not allowed access.
Ответ:
Сообщение от Blueeyer
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:2016' is therefore not allowed access.
Тут же написано вы пытаетесь сделать кроссдоменный запрос на чужой сервер, на котором они запрещены.
Вопрос: json возвращает страницу в начало

                $('#senduser').live('click', function () {

                    var p = $(this).parents('p').find("textarea").val();
                    var cell = $(this).parents('td').attr("id");
                    var dataPost = { param: p, link:cell };
                    $.ajax({
                        type: "POST",
                        url: '/Home/FirstAjax',
                        data: dataPost,
                        dataType: "json",
                        error: errorFunc
                    });
                    $(this).parents('p').remove();
                    i--;
                })


в одной из ячеек таблицы выполняется такой скрипт, а после его выполнения переходит в начало, как будто кнопку Home нажали.
как бороться?
---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6002: Service Pack 2) '
Ответ: Erik_Kartmann, посмотри как в других темах мы делаем тестовые примеры...
Вопрос: Как сделать отправку ответа по json c этой формой?

Есть ajax форма обратной связи ,все работает хорошо,но как переделать чтобы скрипт отвечал в JSON (например status: success или status: false), а уже в jQuery-скрипте выводится HTML ответ на страницу ?
Я так понял нужно завести переменную,в нее буду получать статус(как?) и в зависимости от этого статуса буду выводить сообщение в скрипте js?
smartlanding.biz/ajax-forma-v-modalnom-okne.html использовал эту форму.

Попытался я сделать так
файл mail.php
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    // Если к нам идёт Ajax запрос, то ловим его
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['messages'])) {$messages = $_POST['messages'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
  $json = array(); // пoдгoтoвим мaссив oтвeтa
  if (!$name or !$phone or !$messages) { // eсли хoть oднo пoлe oкaзaлoсь пустым
    $json['error'] = 'Вы зaпoлнили нe всe пoля! oбмaнуть рeшили? =)'; // пишeм oшибку в мaссив
    echo json_encode($json); // вывoдим мaссив oтвeтa 
    die(); // умирaeм
  }
  
    $to = "viktor242424@gmail.com"; /*Укажите адрес, га который должно приходить письмо*/
    $sendfrom   = "codabra@yandex.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "$formData";
    $message = "$formData<br> <b>Имя пославшего:</b> $name <br><b>Телефон:</b> $phone  <br><b>Сообщение:</b> $messages";
    $send = mail ($to, $subject, $message, $headers);

    $json['error'] = 0; // oшибoк нe былo

  echo json_encode($json); // вывoдим мaссив oтвeтa
} else {
    http_response_code(403);
    echo "Попробуйте еще раз";
}
}
//Если это не ajax запрос
echo 'Ошибка!';

?>



файл со скриптом
файл со скриптом
$(document).ready(function () {
    $("form").submit(function () {
        // Получение ID формы
        var formID = $(this).attr('id');
        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        $.ajax({
            type: "POST",
            url: 'mail.php',
      dataType: 'json', // oтвeт ждeм в json фoрмaтe
         data: data, // дaнныe для oтпрaвки
           success: function(data){ // сoбытиe пoслe удaчнoгo oбрaщeния к сeрвeру и пoлучeния oтвeтa
           		if (data['error']) { // eсли oбрaбoтчик вeрнул oшибку
           			alert(data['error']); // пoкaжeм eё тeкст
           		} else { // eсли всe прoшлo oк
           			alert('Письмo oтврaвлeнo! Чeкaйтe пoчту! '); // пишeм чтo всe oк
           		}
             },
        });
        return false;
    });
});

Немного запутался крч,решение тут простое как я понимаю
Ответ: Причем тут php.ini руководства?
Смотреть надо настройки реального сервера, а они изначально определяются хостером, а не мануалом.
Я не использую isset() везде и вся ибо привык контролировать код и настройки сервера, которые многие можно переопределять. И могу сказать из опыта, что на многих "по умолчанию" будет вывод и уведомлений и предупреждений, не говоря уже об ошибках (фатальные конечно иной вопрос).

Он поступает правильно, хотя бы уже потому, что видимо не знает о таком поведении РНР.
Вопрос: Помогите json в таблицу

Здравствуйте! Есть данные запроса json, подскажите как их преобразовать в таблицу? Мне нужно два столбца: photo_1280 и текст. Подскажите как это сделать?

response: {
count: 85,
items: [{
id: 404207907,
album_id: 229297150,
owner_id: -112764104,
user_id: 100,
photo_75: 'https://pp.vk.me/...572/FK0YWJDF4-g.jpg',
photo_130: 'https://pp.vk.me/...574/BQM4r-9E5Qc.jpg',
photo_604: 'https://pp.vk.me/...576/GmEcavgkzQQ.jpg',
photo_807: 'https://pp.vk.me/...578/P-hP1qTMjhI.jpg',
photo_1280: 'https://pp.vk.me/...57b/vsQKQTsZWxk.jpg',
width: 682,
height: 1024,
text: 'мод 35 1569.
Размеры 42-44; 44-46.
Ткань: Турецкая ангора + бархатная лента',
date: 1457464636
}, {
id: 404207901,
album_id: 229297150,
owner_id: -112764104,
user_id: 100,
photo_75: 'https://pp.vk.me/...573/hKzPE7M8zjM.jpg',
photo_130: 'https://pp.vk.me/...575/8FEJYXirT3c.jpg',
photo_604: 'https://pp.vk.me/...577/q2J-cDF9yrs.jpg',
photo_807: 'https://pp.vk.me/...579/O4c2keDxyok.jpg',
photo_1280: 'https://pp.vk.me/...57a/U6n8qakmbV4.jpg',
width: 682,
height: 1024,
text: 'мод 35 1569.
Размеры 42-44; 44-46.
Ткань: Турецкая ангора + бархатная лента',
date: 1457464635
}
Ответ: Germont,
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <style>
        #tbl{
            border-collapse : collapse;
        }
        #tbl td{
            border : 1px solid black;
            padding : 10px;
        }
    </style>
    <table id="tbl"></table>
    <script>
        var response = {
            count: 85,
            items: [{
                id: 404207907,
                album_id: 229297150,
                owner_id: -112764104,
                user_id: 100,
                photo_75: 'https://pp.vk.me/...572/FK0YWJDF4-g.jpg',
                photo_130: 'https://pp.vk.me/...574/BQM4r-9E5Qc.jpg',
                photo_604: 'https://pp.vk.me/...576/GmEcavgkzQQ.jpg',
                photo_807: 'https://pp.vk.me/...578/P-hP1qTMjhI.jpg',
                photo_1280: 'https://pp.vk.me/...57b/vsQKQTsZWxk.jpg',
                width: 682,
                height: 1024,
                text: 'мод 35 1569. Размеры 42-44; 44-46. Ткань: Турецкая ангора + бархатная лента',
                date: 1457464636
            }, {
                id: 404207901,
                album_id: 229297150,
                owner_id: -112764104,
                user_id: 100,
                photo_75: 'https://pp.vk.me/...573/hKzPE7M8zjM.jpg',
                photo_130: 'https://pp.vk.me/...575/8FEJYXirT3c.jpg',
                photo_604: 'https://pp.vk.me/...577/q2J-cDF9yrs.jpg',
                photo_807: 'https://pp.vk.me/...579/O4c2keDxyok.jpg',
                photo_1280: 'https://pp.vk.me/...57a/U6n8qakmbV4.jpg',
                width: 682,
                height: 1024,
                text: 'мод 35 1569. Размеры 42-44; 44-46.Ткань: Турецкая ангора + бархатная лента',
                date: 1457464635
            }]
        },
        tbl = document.querySelector('#tbl');
        response.items.forEach(function (el) {
            var row = tbl.insertRow(tbl.length);
            row.insertCell(0).innerHTML = el.photo_1280;
            row.insertCell(1).innerHTML = el.text;
        })
    </script>
</body>
</html>
Вопрос: ajax не возвращает json данные

Добрый день!
Помогите, у меня ajax не возвращает json данные

sample.js
$(function() {

    $.ajax({
        type: "GET",
        dataType: 'json',
        url: "/residents/index.php",
        success:function(data){
	         console.debug(data);
                    console.debug(data);
                    alert(data);
	        }
    }).done(function(resident) {
        resident.unshift({ id: "0", name: "" });
        	   	
                $("#jsGrid").jsGrid({
                    height: "70%",
                    width: "100%",//100%
                    selecting: true,
                    filtering: true,
                    editing: true,
                    sorting: false,
                    paging: true,
                    autoload: true,
                    pageSize: 15,
                    pageButtonCount: 5,
                    controller: {
                    loadData: function(filter) {
                    return $.ajax({
                        type: "GET",
                        url: "/residents/",
                        data: filter
                                 });
                },
                insertItem: function(item) {
                    return $.ajax({
                        type: "POST",
                        url: "/residents/",
                        data: item
                    });
                },
                updateItem: function(item) {
                    return $.ajax({
                        type: "PUT",
                        url: "/residents/",
                        data: item
                    });
                },
                deleteItem: function(item) {
                    return $.ajax({
                        type: "DELETE",
                        url: "/residents/",
                        data: item
                    });
                                          }
                    },
           fields: [
                { name: "id", title: "id", type: "text", width: 150 },
                { name: "county", title: "Округ", type: "number", width: 50, filtering: false },
                { name: "dvk", title: "ДВК", type: "text", width: 200 },
                { name: "surname", type: "text", title: "Is Married", filtering: false },
                { type: "control" }
            ]
            });
           });//
        });


index.php
<?php
include "../models/ResidentsRepository.php";
$config = include("../db/config.php");
$db = new PDO($config["db"], $config["username"], $config["password"]);
$residents = new ResidentsRepository($db);
switch($_SERVER["REQUEST_METHOD"]) {
    case "GET":
     $result = $residents->getAllNo();
     break;
        
    case "POST":
        $result = $residents->insert(array(
            "name" => $_POST["name"],
            "age" => intval($_POST["age"]),
            "address" => $_POST["address"],
            "married" => $_POST["married"] === "true" ? 1 : 0,
            "country_id" => intval($_POST["country_id"])
        ));
        break;
    case "PUT":
        parse_str(file_get_contents("php://input"), $_PUT);
        $result = $residents->update(array(
            "id" => intval($_PUT["id"]),
            "name" => $_PUT["name"],
            "age" => intval($_PUT["age"]),
            "address" => $_PUT["address"],
            "married" => $_PUT["married"] === "true" ? 1 : 0,
            "country_id" => intval($_PUT["country_id"])
        ));
        break;
    case "DELETE":
        parse_str(file_get_contents("php://input"), $_DELETE);
        $result = $residents->remove(intval($_DELETE["id"]));
        break;
}
header('Content-Type: application/json; charset=utf-8');
//echo json_encode($result);
echo "Now the json encoded result: \n";
echo json_encode($result);
//var_dump($result);
//phpinfo(32);
?>
Ответ: Что значит не помогло, я же вам не Аспирин предлагаю. По делу, коли серверный код обрабатывает только эти запросы, то со строки 8 должно быть:

header('Content-Type: application/json; charset=utf-8');
exit(json_encode($residents->getAllNo()));
break;


с удалением строк 36 - 41, ибо остальные запросы вообще не интересует ответ сервера, и сколько строк вставлено или обновлено возвращается не известно кому и зачем.

Что за ссылки возвращаются, это разбирайтесь сами посредством отладчика и анализа, ибо причиной могут быть ошибки на сервере и прочее. А валидный JSON не получится, если сервер вкупе с ним будет выплевывать клиенту и другие данные, даже отданных подряд две json-строки в итоге не есть JSON.
Вопрос: Парсинг JSON по URL. Как???

Доброго времени суток уважаемые форумчане. Необходима ваша помощь и консультация. Я только начал знакомиться с javascript, и столкнулся со следующей проблемой:

Существует ресурс (магазин игровых вещей) предоставляющий информацию о товаре в виде JSON строки:



Я написал простой скрипт, позволяющий получать мне необходимые данные ( Имя товара, его качество и цену):

<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8"/>
</head>
<body>
<script type="text/javascript">
function info(){	
var jsontext = '{"classid":"1293510722","instanceid":"143865972","market_name":"Shadow Case Key","name":"Shadow Case Key","market_hash_name":"Shadow Case Key","rarity":"Base Grade","quality":"","type":"Key","mtype":"CSGO_Tool_WeaponCase","slot":"Normal","description":[{"type":"html","value":"This key only opens Shadow Cases"},{"type":"html","value":" "},{"type":"html","value":"","color":"00a000","app_data":{"limited":1}}],"tags":[{"internal_name":"CSGO_Tool_WeaponCase_KeyTag","name":"Key","category":"Type","category_name":"Type"},{"internal_name":"normal","name":"Normal","category":"Quality","category_name":"Category"},{"internal_name":"Rarity_Common","name":"Base Grade","category":"Rarity","color":"b0c3d9","category_name":"Quality"}],"hash":"5d3588cdec78090c5367203cce582e73","min_price":"15400","offers":[{"price":"15400","count":"6"},{"price":"15889","count":"5"},{"price":"15890","count":"3"},{"price":"15900","count":"9"},{"price":"16214","count":"38"},{"price":"17200","count":"2"},{"price":"19000","count":"6"},{"price":"2000000","count":"9"}],"buy_offers":[{"o_price":"14610","c":"2"},{"o_price":"14500","c":"1"},{"o_price":"14400","c":"1"},{"o_price":"14100","c":"1"},{"o_price":"14000","c":"2"},{"o_price":"13900","c":"1"},{"o_price":"13700","c":"1"},{"o_price":"13504","c":"1"},{"o_price":"13500","c":"1"},{"o_price":"13300","c":"1"},{"o_price":"13000","c":"1"},{"o_price":"12700","c":"1"},{"o_price":"12400","c":"1"},{"o_price":"12100","c":"1"},{"o_price":"11700","c":"1"},{"o_price":"11501","c":"1"},{"o_price":"11000","c":"3"},{"o_price":"10600","c":"1"},{"o_price":"10300","c":"1"},{"o_price":"10000","c":"2"},{"o_price":"1453","c":"1"},{"o_price":"100","c":"1"}]}';
var data = JSON.parse(jsontext);
console.log ("Имя: " + data.name + " Качество: " + data.slot + " Цена: " + data.min_price);
	}
 info();
</script>
</body>
</html>


Вся загвоздка заключается в том, что полученную JSON строку, мне в ручную приходится копировать в переменную "jsontext". Подумал, что наверняка можно парсить сразу по URL.

Почитав еще материал на данную тему - я нашел, что это можно осуществить с помощью $.getJSON. И столкнулся с таким понятием как кроссдоменные запросы. И тупик. Ошибка за ошибкой. Даже простой пример с получением JSON из локального файла, у меня и то не получился.

<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8"/>
<script src="jquery.js"></script>
</head>
<body>
<script type="text/javascript">
$.getJSON("test.json", function(json) {
    console.log(json); // this will show the info it in firebug console
});
</script>
<hr>
<script type="text/javascript">
</script>
</body>
</html>


XMLHttpRequest cannot load file:///C:/Users/Argot/Desktop/test.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.send @ jquery.js:8630

Читаю сейчас про кросдоменные запросы, для меня это темный лес.

Поэтому если кто нибуть, откликнется на мою просьбу и сможет помочь мне или сможет написать готовое решение с парсингом по url, его помощь не останется безвозмездной!
Заранее благодарен.
Ответ:
Сообщение от EnoD
Для того чтобы отслеживать интересующую меня цену, на тот или иной товар.
Отслеживать где, на локальном компьютере? Если так, зачем браузер, без него можно обойтись, а именно он ругается на недоступность. Если доступ к ресурсу есть и он возвращает данные, то на локальном компьютере все это можно сделать без "ругани" со стороны браузера.
Вопрос: Json api twitch: извлечь в массив значения ключа name.


Код HTML5
1
<div id="player"></div> 
Код Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$(document).ready(function () {
    var members = ['VeRsuta', 'A1taOda', 'Stray228', 'followKudes', 'Inmateoo', 'Na_podhvate', 'rsphilippe', 'dubastv', 'smap51', 'iprimal_rs', 'im_mr_bloo', 'vityshka', 'aikohero', 'cowsbelieve'];
    var memberData = [];
 
    $.each(members, function (index, member) {
        $.getJSON('https://api.twitch.tv/kraken/users/' + member + '?callback=?', function (d) {
            if (d.status == 404) {
            }
            // Member does not exist
            else {
                var data = [];
                data[0] = member;
                data[1] = d.display_name;
                $.getJSON('https://api.twitch.tv/kraken/streams/' + data[0] + '?callback=?', function (d) {
                    if (d.stream != null) {
                        // user isn't offline
                        memberData.push(data[0]);
                        $("#player").append("<img src='http://pso-clan.com/twitch/lib/images/online.png'>" + "<a target='_blank' href='http://www.twitch.tv/" + data[0] + "'>" + data[1] + "</a>" + " - Viewers: " + d.stream.viewers + "<br>");
                    }
                })
            }
        })
    });
});
запрос json

ребят подскажите как извлечь в массив значения ключа name, что бы не писать вручную и потом отсортировать по количеству viewers
Ответ: стучи в скайп kudzakudza1
Вопрос: Ошибка при чтении json полученного через ajax

Здравствуйте.

Хочу сделать подгрузку json через ajax, с последующим поиском по json, по :

var json;
var xmlhttp;
var products;		

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
		if (xmlhttp.readyState==4 && xmlhttp.status==200)
		{
			json = JSON.stringify(xmlhttp.responseText);

			json = JSON.parse(json);
		}
}
xmlhttp.open("GET","/app/js/lib.json",true); 
xmlhttp.send();
		
function searchPositions(arr, searchKey) 
{
return arr.filter(obj => Object.keys(obj).some(key => obj[key].includes(searchKey)));
}

products = searchPositions(json, "текст");


В итоге получаю ошибку в строке return arr.filter(obj => Object.keys(obj).some(key => obj[key].includes(searchKey))); :
main.js:270 Uncaught TypeError: arr.filter is not a function

Причем если json вставить сразу в код, примерно так, то ошибок не будет и поиск отрабатывает:

json = JSON.stringify([{"id":1,"low_name":"белый карандаш","name":"Карандаш"},{"id":2,"low_name":"синий фломастер","name":"Фломастер"},{"id":3,"low_name":"черный маркер","name":"Маркер"}]);



Как исправить эту ошибку?

Файл json , который я пытаюсь получить через ajax создается заново каждый день и встроить его в js файл нет возможности.
Ответ: действительно.
laimas и рони огромное спасибо!

Перенес код ниже в 19 строку
document.addEventListener("keyup", function(e) {

if (e.target.id == 'search_field')
{
     if(e.target.value.length > 1){
	  products = searchPositions(json, "текст");
     }
});


JSON.stringify убрал. действительно был некоректный json, добавил [ ]
Вопрос: автоматическое определение json или html в ответе ajax

использую примерно такую конструкцию:
$.ajax({ url: '….',
dataType: 'json|html',
success: function(dat, status){..... },
});
если dataType указан, как json, то при при приеме html возникает ошибка и функция success не вызывается.
а если dataType:'html', то в случае приема json, он закодирован.
а можно как-то сказать jquery автоматически определять тип ответа?
Ответ: с принудительным указанием заголовка "Content-type: text/json" помогло.
Вопрос снят. спасибо.
Вопрос: XMLHttpRequest возвращает статус 0

Добрый день!
Возник вопрос по работе с XMLHttpRequest. Есть сайт https://site.ru/, при входе на который идет обращение к локально установленному приложению. При этом возвращается статус 0 и, соответственно, работа происходит некорректно.

Но если поменять в запросе протокол с https на http, то все работает - статус = 200 и возвращается некий результат (в этом случае есть еще проблема смешанного контента, но я разрешаю браузеру обрабатывать такие ситуации. делается это нажатием на иконку "загрузить небезопасные скрипты" или "разрешить смешанный контент").

Почему "в режиме https" возвращается статус 0 ?
Ответ: Может идет кросс доменный запрос (другой домен/порт/протокол)?
Если это все ваши сайты, то можно добавить хидер Access-Control-Allow-Origin