Я создаю супер простое приложение веб-сайта, которое вызывает API для получения данных обратной ссылки для любого веб-сайта, введенного пользователем в приложение. Данные, отправляемые API, включают строки (например, http://www.domain.com/?feed=rss) и номера и находятся в формате JSON. Я анализирую ответ следующим образом:Данные JSON принимаются в неполном формате в php?
mozResponse = JSON.parse(response);
Я тогда перебирать эти данные, выдвигая только данные, которые я хочу в 2-х новых массивов (Arry, arry1), объявленный следующим образом:
arry = [];
arry1 = [];
Раздвигая, как следующим образом:
arry.push({id:i, url:mozResponse[i].uu, pa:Math.round(mozResponse[i].upa), da:Math.round(mozResponse[i].pda), anchor:mozResponse[i].lt});
Я тогда Stringify эти два массива следующим образом:
var cautionArrayString = JSON.stringify(arry);
var dangerArrayString = JSON.stringify(arry1);
Я использую JavaScript XMLHTTPRequest для POST эти данные в файл PHP следующим образом:
var queryString = "email=" + Email + "&caution=" + cautionArrayString + "&danger=" + dangerArrayString;
xhr1.onreadystatechange=Response1;
xhr1.open("post","http://example.com/emails.php",true);
xhr1.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr1.send(queryString);
Файл PHP затем читает:
$caution = $_POST['caution'];
$danger = $_POST['danger'];
Я знаю, в этот момент я должен расшифруйте JSON снова, после этого я закончил с разбитым массивом. Вот что console.log читает после размещения данных в файл PHP, с файлом PHP с помощью:
echo($_POST['caution']);
echo ($_POST['danger']);
console.log показывает:
[{"id":3,"url":"example.ca/","pa":26,"da":12,"anchor”:”Example”},
{"id":4,"url":"example.ca/","pa":26,"da":12,"anchor":"thank you gifts"},
{"id":5,"url":"example.ca/","pa":26,"da":12,"anchor":"flowers"},
{"id":6,"url":"example.ca/","pa":26,"da":12,"anchor":"thank you"},
{"id":7,"url":"example.ca/","pa":26,"da":12,"anchor":"Arrive in Style"},
{"id":8,"url":"example.ca/","pa":26,"da":12,"anchor":"dignity"},
{"id":9,"url":"example.ca/","pa":26,"da":12,"anchor":"Beautiful in Blue"},
{"id":10,"url":"example.ca/","pa":26,"da":12,"anchor":"Blooming Garden Basket"},
{"id":11,"url":"example.ca/","pa":26,"da":12,"anchor":"Country Basket Blooms"},
{"id":12,"url":"example.ca/","pa":26,"da":12,"anchor":"Heart’s Delight"},
{"id":13,"url":"example.ca/","pa":26,"da":12,"anchor":"Make a Wish"},
{"id":14,"url":"example.ca/","pa":26,"da":12,"anchor":"Moondance"},
{"id":15,"url":"example.ca/","pa":26,"da":12,"anchor":"Queen’s Court"},
{"id":16,"url":"example.ca/","pa":26,"da":12,"anchor":"Sweet as Sugar"},
{"id":17,"url":"example.ca/","pa":26,"da":12,"anchor":"flower colors"},
{"id":18,"url":"example.ca/","pa":26,"da":12,"anchor":"Always Yours"},
{"id":19,"url":"example.ca/","pa":26,"da":12,"anchor":"Sunrise, Sunset"},
{"id":20,"url":"example.ca/","pa":26,"da":12,"anchor":"Uniquely Chic"},
{"id":21,"url":"example.com/best/index.php?page=1998","pa":25,"da":31,"anchor":"example.ca/"},
{"id":22,"url":"example.com/best/index.php?page=1994","pa":25,"da":31,"anchor":"example.ca/"},
{"id":23,"url":"example.ca/","pa":25,"da":16,"anchor”:”example”},
{"id":28,"url":"example.ca/article/156-best-cms-for-small-business","pa":22,"da":39,"anchor":"example.ca/"},
{"id":30,"url":"example.ca/blog.html","pa":21,"da":15,"anchor":"example.ca/"},
{"id":31,"url":"example.ca/beyond-the-flowers-choosing-a-vase/","pa":20,"da":12,"anchor”:”Example”},
{"id":32,"url":"example.ca/beyond-the-flowers-choosing-a-vase/","pa":20,"da":12,"anchor":"Arrive in Style"},
{"id":33,"url":"example.ca/beyond-the-flowers-choosing-a-vase/","pa":20,"da":12,"anchor":"Beautiful in Blue"},
{"id":34,"url":"example.ca/beyond-the-flowers-choosing-a-vase/","pa":20,"da":12,"anchor":"Blooming Garden Basket"},
{"id":35,"url":"example.ca/beyond-the-flowers-choosing-a-vase/","pa":20,"da":12,"anchor":"Country Basket Blooms"},
{"id":36,"url":"example.ca/beyond-the-flowers-choosing-a-vase/","pa":20,"da":12,"anchor":"Heart’s Delight"},
{"id":37,"url":"example.ca/beyond-the-flowers-choosing-a-vase/","pa":20,"da":12,"anchor":"Make a Wish"},
{"id":38,"url":"example.ca/gifts.html","pa":19,"da":11,"anchor”:”example- <span class=\"catlist\"> Flowers</span>"},
{"id":39,"url":"example.ca/category/flowers/","pa":19,"da":16,"anchor”:”Example”},
{"id":40,"url":"example.ca/category/floral-fauna/","pa":19,"da":16,"anchor”:”Example”},
{"id":41,"url":"nunavut.findstuffhere.ca/nunavut/?feed=rss2[]
Где можно увидеть КОНЦЕ, что 1-й массив неполный, а второй пуст (как и должно быть!). Итак, мой вопрос здесь, что вызывает это и как я могу его исправить?
Вещи Примечание
- Я использую 3 URL, в качестве входных данных для тестирования. Данные заполняются 1 URL-адресом, но 2 других (приведенный выше пример) возвращают этот неполный JSON, по-видимому, из-за того, что строка запроса является частью URL-адреса, возвращаемого API.
- я
console.log(mozResponse)
и выход, как ожидалось - я
console.log(arry) and console.log(arry1)
ПОСЛЕ переборе mozResponse и толкая данные от mozResponse к Arry/arry1 и выход полным набором - Я
console.log(arry)
иconsole.log(arry1)
после применения JSON.stringify, но ДО размещение в PHP и выход завершения
вещей я исследовал
- Первоначально я думал, что это результат одного из URL-адресов, возвращаемых API , включая строку запроса (например, ?подача = RSS2, где он разрывы), однако до этого момента разрыва Есть строки запроса обрабатывается отлично
- Не похоже, чтобы быть ошибка JSON, как я использовал json_last_error(); и он возвращается 0.
- Кроме того, кажется, не будет аа JSON/POST предел гольца вещи, потому что она возвращает сломанный JSON, когда я входа другого URL (выход из $ _POST для этого URL также брейков следующих за строка запроса, не уверен, если это совпадение)
- Suhosin нет
- создал страницу phpinfo проверить max_vars но предел большой
Любая помощь очень ценится!
* различные цитаты из копии/вставки!
я действительно не читал этот вопрос, но я заметил, что на первой линии есть другой тип кавычек: '[{«ID» : 3, "url": "example.ca/","pa":26,"da":12,"anchor":"Example"}, ' –
Они из копирования вставки, как сказал @jeroen! Спасибо за указание это, хотя, я поправлю свой пост – nlw13