2015-10-13 2 views
0

Моя форма:Разбор JSON данных с JS поступают от PHP

  <form class="form-inline signup" action="php/signupForm.php" role="form" id="signupForm"> 
     <div class="form-group"> 
      <input type="email" name="email" class="form-control" placeholder="Email address"> 
     </div> 
     <div class="form-group"> 
      <button type="submit" class="btn btn-theme ladda-button" data-style="expand-left"> 
<span class="ladda-label" id="notice">Get notified!</span> 
</button> 
     </div> 
     </form> 

конец моего PHP скрипт

$response = array(
    "status" => $status, 
    "message" => $message 
); 

echo json_encode($response); 

Моя страница получает данные, как:

{"status":0,"message":"This email is already on list!"} 

с использованием JS Мне нужно проанализировать эти данные и затем обновить текст внутри элемента.

<span id="notice">Get notified!</span> 

вот мой сценарий, который не работает, после того, как senging данные формы на мой PHP скрипт я получаю белый экран, который показывает JSON сильный

$(document).ready(function() { 
     $.ajax({ 
     dataType: 'json', 
     $('#notice').text(data.message); 
     }); 
    }); 
+1

Если вы получаете экран ответа, то вы делаете правильную форму представить вместо предотвращение формы из их представления (т.е. с использованием preventDefault в onsubmit случая), а затем делаете ajax-вызов. С указанным кодом вы выполняете свой вызов ajax, как только загружается ваша главная страница, а не когда вы отправляете форму –

+0

. Я думаю, что вы правы, и я думаю, что я сделал это раньше. Итак, исправить ли я выполнить ajax onclick submit? – rhill45

ответ

1

Вы должны обработать ответ на обратный вызов ,

$(document).ready(function() { 
    $('form').on('submit', function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      data: $(this).serialize(), 
      url: $(this).attr('action'), // Or the path of the PHP file 
      dataType: 'json', 
     }).done(function(response) { 
      $('#notice').text(response.message); 
     }); 
    }); 
}); 

Смотрите соответствующие документы here

+0

Какой url пойдет туда, он вернется на страницу с сервера? – rhill45

+1

URL-адрес скрипта PHP, который вы вызываете –

+0

не работает :(тот же результат – rhill45

1

Это Аякса вызов не хорошо сформированные, отсутствие успеха обратного вызова и URL-адрес, например:

$(document).ready(function() { 
    $.ajax({ 
     url: '/the/url/where/your/data/comes/from/', 
     dataType: 'json', 
     success: function (data) { 
      $('#notice').text(data.message); 
     } 
    }); 
}); 
+0

не работает :(тот же результат – rhill45

1

Ваш код, как есть, только выполняющийся на странице загрузки и а не при подаче формы. Вам необходимо прикрепить событие onsubmit, предотвратить действие по умолчанию для отправки формы и выполнить свой вызов ajax. Кроме того, ваши Аякса называют сам был уродливы

$("#yourFormID").submit(function(e){ 
    e.preventDefault(); 
    $.ajax({ 
     url:"/urlToServerScript", 
     data:{} //any form data the script needs you should be put here, 
     dataType:"json" //type of response the server will output 
    }).then(function(data){ 
     $('#notice').text(data.message); 
    }); 
}); 
+0

, но данные уже возвращаются на страницу из скрипта php. Мне просто нужно что-то обрабатывать с возвращаемыми данными.Я, вероятно, неправильно понимаю вас здесь – rhill45

+0

@Rhillz, _ "после передачи данных формы на мой php-скрипт. Я получаю белый экран, на котором отображается json strong" _. Это означает, что данные не возвращаются через запрос AJAX хотя вы делаете регулярную отправку html-формы, которая заставляет браузер перемещаться от текущей страницы к ответу сервера. Если вы хотите остаться на текущей странице и по-прежнему отправлять данные на серверный скрипт, вот как вы это сделаете –

+0

, но это мой sql обновляется – rhill45

Смежные вопросы