Ajax не работает должным образом

Медведь со мной Я мой javascript немного ржавый. Поэтому я пытаюсь использовать вызов ajax для файла PHP и придать ему тип плана, затем проверить его, проверить, возвращает ли он true или false, если некоторые разрешенные слоты меньше, чем некоторые слоты, использованные для план. Вот форма в XHTML.

<form method="post" action="/membership-change-success" id="PaymentForm"> <input type="hidden" name="planChosen" id="planChosen" value="" /> </form> 

В том же файле. (<ВЫБОР ПЛАН>) разобрался с текущим планом.

 <script> var hash = window.location.hash; var currentPlan = "( < PLAN CHOICE > )"; $(".planChoice").click(function(event){ var isGood=confirm('Are you sure you want to change your plan?'); var success; $("#planChosen").val($(this).data("plan")); $.ajax({ url: '/ajax/planCheck.php', type: "POST", dataType: 'json', data: ({plan: $(this).data("plan")}), success: function (data) { //This is what is not working I can't get it to return true success = data; } }); if(success) { if (isGood) { $("#PaymentForm").submit(); } window.location = '/membership-change-success'; } else { alert('Please make sure you deactivate your listings to the appropriate amount before you Downgrade.') } }); 

Мой PHP для ответа ajax выглядит так.

  <?php require ('../includes/common.php'); include_once ('../includes/db-common.php'); require ('../includes/config.php'); $membership = new membership($dbobject); $listing = new listing($dbobject); $totalAvailableListings = ($membership->get_listingsAmount($_POST['plan'])); if($totalAvailableListings>=$listing->get_active_listings($user->id)){ echo json_encode(true); // I've tried with out jason_encode too } else { echo json_encode(false); } 

И это в значительной степени, если у вас есть предложения, пожалуйста, дайте мне знать.

Поэтому я попытался сделать это по-другому.

  $(".planChoice").click(function (event) { var isGood = confirm('Are you sure you want to change your plan?'); var success; $("#planChosen").val($(this).data("plan")); if (false) { if (isGood) { $("#PaymentForm").submit(); alert('you did it'); } } else { alert(isSuccessful($(this).data("plan"))); //alert('Please make sure you deactivate your listings to the appropriate amount before you downgrade.'); } }); 

и у меня есть функция ajax

  function isSuccessful(plan) { return $.ajax({ url: '/ajax/planCheck.php', type: "POST", dataType: 'json', data: {plan: plan} }); } 

Предупреждение сообщает мне об этом [object XMLHttpRequest]

какие-либо предложения?

$.ajax() возвращает результаты асинхронно. Используйте .then() прикованный к $.ajax() для выполнения задачи на основе ответа

  $.ajax({ url: '/ajax/planCheck.php', type: "POST", dataType: 'json', data: {plan: $(this).data("plan")} }) .then(function(success) { if (success) { $("#PaymentForm").submit(); } // if `form` is submitted why do we need to set `.location`? // window.location = '/membership-change-success'; } else { alert('Please make sure you deactivate your listings to the appropriate amount before you Downgrade.') } }, function err(jqxhr, textStatus, errorThrown) { console.log(errorThrow) }) 

Вы должны использовать следующую форму для своего вызова ajax

 $.ajax({ url: '/ajax/planCheck.php', type: "POST", dataType: 'json', data: ({plan: $(this).data("plan")}), success: success = data }) .done(function(response) { if(success) { if (isGood) { $("#PaymentForm").submit(); } window.location = '/membership-change-success'; } else { alert('Please make sure you deactivate your listings to the appropriate amount before you Downgrade.') } }); 

предложение .done () гарантирует, что вы выполните этот код после завершения ajax-вызова и получения ответа.