【发布时间】:2013-12-27 17:56:07
【问题描述】:
我知道标题很烦人,但无论如何我要开始我的问题。我在一个有点多用途的类中创建了一个函数。我给了它一个布尔类型的参数,当然只接受“true”和“false”作为值。接下来,我通过另一个 PHP 文件调用该函数,在该文件上通过 ajax 发布数据,并通过我的 HTML 页面上的按钮调用该 ajax。让我用图表来演示一下:
我希望你已经理解了我的程序流程,现在让我们来看看代码,或者换句话说,这是我尝试过的:
HTML 页面的按钮:
document.write('<span class="pull-right" style="margin-top: -30px; margin-right: 20px;"><button id="accept_offer" class="btn btn-success" onclick="setPostOfferAcceptance(32);">Accept Offer</button></span>');
AJAX 页面:
<?php
require_once '../../Classes/MyClass.php';
$offer_id = $_POST["id"];
$acceptance = $_POST["acceptance"];
$accepted = MyClass::SetOfferAcceptance($offer_id, $acceptance);
if($accepted) $data["status"] = "success";
else $data["status"] = "error";
echo json_encode($data);
?>
MyClass 的功能:
public static function SetOfferAcceptance($offerId, $acceptance) {
if(Utilities::IsValid($offerId) && Utilities::IsValid($acceptance)) {
Database::OpenConnection();
$offerId = Utilities::SafeString(Database::$databaseConnection, $offerId);
$acceptance = Utilities::SafeString(Database::$databaseConnection, $acceptance);
$query = "";
if($acceptance == true) {
$query = Database::$databaseConnection->prepare("UPDATE post_offer SET Accepted=1 WHERE Offer_ID = ?");
} else {
$query = Database::$databaseConnection->prepare("UPDATE post_offer SET Accepted=0 WHERE Offer_ID = ?");
}
$query->bind_param("i", $offerId);
$result = $query->execute();
Database::CloseConnection();
if($result) return 1; else return -1;
}
}
抱歉,最后,这是我将数据发布到 AJAX 页面的 javascript 函数:
function setPostOfferAcceptance(offer_id) {
if($("#accept_offer").text() == "Accept Offer") {
$.post("admin/post_offer/set_post_offer_acceptance.php", {id: offer_id, acceptance: true}, function(data){
if(data.status == "success") {
$("#acceptedOfferModal").modal("show");
setTimeout(function(){ $("#acceptedOfferModal").modal("hide"); }, 2500);
$("#accept_offer").text("Unaccept Offer");
console.log(data.status);
}
}, 'json');
} else if($("#accept_offer").text() == "Unaccept Offer") {
$.post("admin/post_offer/set_post_offer_acceptance.php", {id: offer_id, acceptance: false}, function(data){
if(data.status == "success") {
$("#unacceptedOfferModal").modal("show");
setTimeout(function(){ $("#unacceptedOfferModal").modal("hide"); }, 2500);
$("#accept_offer").text("Accept Offer");
console.log(data.status);
}
}, 'json');
}
}
编辑:我忘了发布 JS 代码。但是我现在已经更新了。请考虑一下。谢谢。
问题在于函数SetOfferAcceptance() 永远不会运行else 条件,即如果$acceptance 不等于true。
为什么?谁能指出我的错误。
谢谢。
【问题讨论】:
-
接受是假的吗?
-
@Oriol 他应该改用什么?
-
@user689 我知道他会推荐我使用模板引擎。
-
@user1336827 我已经发布了改变接受值的 JS 代码。
标签: javascript php jquery ajax