JSON получить данные, используя пост-метод - PullRequest
0 голосов
/ 30 октября 2019

Я хочу получить файл json с другого сервера xyz.com (не называя здесь оригинальное имя сайта для safty) для моей html-страницы, но проблема в том, что website xyz.com поддерживает только http post request. Для проверки, если мой код html работает нормально, я использую http get method и загружаю данные json на другой сайт, поддерживающий http get request. И я обнаружил, что он работает нормально. Но когда я пытаюсь для post method он не работает. Можете ли вы помочь мне

Я использую в настоящее время и работает нормально

<script>

   $(function() {


  var people = [];

  $.get('https://api.myjson.com/bins/c307c',function(data) {
      $.each(data.video, function(i, f) {


HTML CODEFOR xyz.com и он также возвращает .json файл

<html>

<head>


<form action="https://www.xyz.php" method="POST" >
<div class="container" style="width:100%;">
<center></center>
</div>
  <div class="container" style="width:100%;">
    <label for="userId"><b>UserId</b></label>
    <input type="number" placeholder="Enter Your User Id" name="userId" autofocus required>

    <label for="Passkey"><b>Passkey</b></label>
    <input type="number" placeholder="Enter Passkey" name="Passkey" required>

    <button type="submit" >GET Json File From Server</button>
  </div>
</form>

Это я пробовал, но не работает

<script>

   $(function() {


  var people = [];

  $.post('https://xyz.php', usedId=5&passkey=55, function(data) {
      $.each(data.video, function(i, f) {


Ответы [ 3 ]

0 голосов
/ 30 октября 2019

Некоторые изменения, которые я предлагаю:

  • Дайте форме идентификатор, в этом случае login выглядит как соответствующий идентификатор
  • Стандартизуйте вашу заглавную букву для полей формы

Вот код, с которого можно начать. Вы заметите, что я создаю ваш data дважды. Решите, хотите ли вы создавать свои данные вручную или использовать сериализацию jQuery, чтобы сделать это для вас. Поскольку это простая форма, последняя, ​​вероятно, в порядке.

Я также получаю конечную точку AJAX прямо из формы, чтобы вы не повторяли себя там.

// when the document has loaded...
$(document).ready(function () {
    // if the user is already logging in
    var login = false;

    // when the form is submitted...
    $('#login').on('submit', function (event) {
        // block the form if it's already been submitted
        if (login) {
            event.stopPropagation();
            event.preventDefault();
            return;
        }

        // lock the form
        login = true;

        // get a handle on the form
        // I use $ as a prefix to differentiate jQuery objects
        // currentTarget is the subject of the event
        var $form = $(event.currentTarget);

        var url = $form.prop('action');

        /*
         * MANUAL
         */
        // form fields are added to the form object as properties by name attribute
        // note that they are not jQuery objects
        var data = {
            userId: $form.userId.value,
            passKey: $form.passKey.value
        };

        /*
         * AUTOMATIC
         */
        // uses jQuery's form serialization to automatically create an object mapping names to values
        var data = $form.serialize();

        $.post(url, data)
            // on success
            .done(function (data, status, request) {
                $.each(data.video, function (i, f) {
                    var link = "https://www.youtube.com/embed/"+ f.video;

                    // backslash at the end of a string means to continue the string on the next line
                    var $row = $('<tr>\
                        <td>' + f.videoName + '</td>\
                        <td>' + f.date + '</td>\
                        <td>' + f.time + '</td>\
                        <td>' + f.liveStatus + '</td>\
                        <td><a target="_blank" href="' + link + '">' + link + '</a></td>\
                    </tr>');

                    $row.appendTo('#userdata tbody');
            })
            // on failure
            .fail(function (request, status, error) {
                window.alert('Failed with a status of ' + status + ': ' + error);
            })
            // executes after either of the above
            // parameters are inconsistent and use either done's or fail's
            .always(function () {
                // do cleanup, i.e. unlock form submission, close modal dialogs, etc.
                login = false
            });

        // stop default form submission
        event.stopPropagation();
        event.preventDefault();
    });
});
0 голосов
/ 30 октября 2019

Пожалуйста, внесите необходимые изменения, чтобы при нажатии на кнопку он получал данные с сервера и отображал их в виде таблицы

<html>
<head>

<form action="https://xyz.php" method="POST" >
<div class="container" style="width:100%;">
<center></center>
</div>
  <div class="container" style="width:100%;">
    <label for="userId"><b>UserId</b></label>
    <input type="number" placeholder="Enter Your User Id" name="userId" autofocus required>

    <label for="passKey"><b>Passkey</b></label>
    <input type="number" placeholder="Enter Passkey" name="passKey" required>

    <button type="submit" >GET DATA</button>
  </div>
</form>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"> </script>

<script>

   $(function() {


  var people = [];

 $.post( "xyz.php",function(data) {
      $.each(data.video, function(i, f) {

        var link = "https://www.youtube.com/embed/"+ f.video;       
         var tblRows = "<tr>" +
          "<td>" + f.videoName + "</td>" + "<td>" + f.date + "</td>" + "<td>" + f.time + "</td>"  +
          "<td>" + f.videoDuration + "</td>" + "<td>" + f.liveStatus + "</td>" + "<td><a target='_blank' href='"+link+"'>"+link+"</a></td>" + "</tr>";
          $(tblRows).appendTo("#userdata tbody");

    });

  });

});
</script>

</head>


<body>

<div class="wrapper">
<div class="profile">
   <table id= "userdata" width="50%" border="2">
  <thead>
            <th>VIDEO NAME</th>
            <th>DATE</th>
            <th>TIME</th>           
            <th>DURACTION</th>
            <th>LIVE STATUS</th>
            <th>LINK</th>
        </thead>
      <tbody>

       </tbody>
   </table>

</div>
</div>
</div>
</html>

0 голосов
/ 30 октября 2019

Попробуйте этот код кода

$.post( "https://xyz.php", { usedId: 5, passkey: 55},
function(data) {
        //your code
 } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...