Простейший API с удаленным сайтом на php и js

113
11 октября 2019, 09:10

Пытаюсь сделать простейший API между одним сайтом и другим, попробовать реализовать самый простейший вариант, а именно просто отправить запрос к php странице сайта и получить обратно данные которые она выедет.

на сервере стоит такой php файл:

 $v['id'] ='11'; $v['nn']='22';
 echo json_encode($v);

просто генерирует тестовую строку в джейсоне

а вот так я пытаюсь отправить запрос на получение данных от этого файла

    jQuery.ajax({
        url: "http://www.****.com/hyst/acore.php",
        type: "GET",
        contentType: 'application/json; charset=utf-8',
        success: function(resultData) {
            alert(resultData);
        },
        error : function(jqXHR, textStatus, errorThrown) {
        alert(textStatus);
        }
    });

но у меня к сожалению выскакивает ошибка, где я ошибся? уместно ли использовать тут аякс если домены у сайта с API и сайта который отправляет запрос разные? если не аякс то как лучше сделать?

Answer 1

Решение в создании ещё одного файла PHP - мост JS обращается к PHP- мост а PHP - мост обращается к внешнему ресурсу по средством "include(resource_URL)", дальше он возвращает нужные вам данные...

Answer 2

Разобрался! В общем может кому потребуется решение похожего? в общем дело было в том что в php обработчике отсутствовала строка

 header('Access-Control-Allow-Origin: *'); 

в итоге мой обработчик (acore.php) стал выглядеть так

 header('Access-Control-Allow-Origin: *'); 
 header("Content-type: application/json; charset: utf-8");;
 $v['id'] ='11'; $v['nn']='22';
 echo json_encode($v);

ну, а запрос решил делать так:

  fetch('http://www.****.com/hyst/acore.php')
      .then(function(response) {
        //alert(response.headers.get('Content-Type')); // application/json; charset=utf-8
        //alert(response.status); // 200
        return response.json();
       })
      .then(function(data) {
        alert(data.id); // тут выходит наши данные записанные под id
      })
      .catch( alert );

хотя можно и вот так вызывать

 var request = new XMLHttpRequest();
    request.open('GET', 'http://www.****.com/hyst/acore.php', false);
    request.onload = function() { 
      if (request.status >= 200 && request.status < 400) {
        var data = JSON.parse(request.responseText);
        alert(data.id);
      } else {
        alert('error');
      }
    };
  request.send();
READ ALSO
Передача данных с PHP (Yii2) в Vue.js

Передача данных с PHP (Yii2) в Vue.js

Постоянно возникает необходимость передать данные модели Yii2 во Vuejs

119
Yii2 как сделать связь многие ко многим с условием?

Yii2 как сделать связь многие ко многим с условием?

Не совсем понимаю один момент, например, есть три связанные таблицы: статья, теги и связующая таблица id_tag и id_postСделать просто вывод по всем...

146
Передача переменной с js в php

Передача переменной с js в php

Есть скрипт, который производит умножение двух чисел

106
MinGW-w64. Не работает элементарный алгоритм

MinGW-w64. Не работает элементарный алгоритм

Я читаю книгу "Олимпиадное программирование" Лааксонена и я попробовал предложенный в этой книге алгоритм перебора с возвратом для решения...

127