Медведь со мной Я мой 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-вызова и получения ответа.