繁体   English   中英

无法通过php发送的ajax响应更新div文本

[英]Unable to update div text from ajax response sent via php

如果有什么可以解决的,对此问题表示歉意。 我搜索并找到了许多相关的帖子,这些使我到了这一点。

我有一个带有1个输入框和一个按钮以及一个div的状态消息的表单片段:

<div>
    <div>
        <div>
            <input id="discount_code"name="discount_code" placeholder="  Enter discount code."></input>
        </div>
        <div>
            <a class="btn btn-xs btn-primary" id="btn-validate">Validate</a>
        </div>
    </div>
    <div id="status_msg" style="border: 1px solid black"></div>
</div>

然后,我有以下JavaScript代码:

  1. 根据点击触发的位:

    $('#btn-validate').on('click', function(e) { e.preventDefault(); validateCode(11); // "11" is a php-provided ID variable });

  2. 带有ajax调用的javscript:

     function validateCode(eventID) { var codeValue = $("#discount_code").val(); if (FieldIsEmpty(codeValue)) { // outside function that exists/works fine $('#status_msg').html('Enter a discount code.').fadeIn(500); $('#status_msg').fadeOut(2500); //bootbox.alert("Please enter discount code to validate."); } else { $.ajax({ type: 'POST', cache: false, async: true, url: '/include/discount_validation.php', dataType: 'json', data: { event_id: eventID, discount_code: codeValue }, beforeSend: function() { $('#status_msg').html(''); $('#status_msg').fadeIn(0); }, success: function(data) { $('#status_msg').html(data); $('#status_msg').fadeIn(0); //bootbox.alert(data); }, error: function(data) { $('#status_msg').html(data); $('#status_msg').fadeIn(0); //bootbox.alert("Error validating discount code: " + JSON.stringify(discount_code)); } }); }}; 

而且,我有一个PHP文件,可以满足要求,并且正在根据输入生成以下json输出:

            // do php database things...
header('Content-Type: application/json');

if(!isset($percent)) {
    //echo("Invalid code: '" . $dCode ."'");
    $message = "Invalid code: '" . $dCode ."'";
    echo json_encode(array('status' => 'error','message' => "$message"));
} else {
    $message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
    echo json_encode(array('status' => 'success', 'message' => "$message"));
}

在上面,我注释掉了bootbox.alert行,但是当它们处于活动状态时,将出现该框,并且消息与我期望的一样。

最后,第一个条件(如果输入框为空)将触发警报(未注释时)并更改#status_msg的文本。

我放入边框以验证可见性,并且#status_msg是可见的,但在成功或错误触发时均未设置。

首先检查您是否在成功添加响应的对象中添加

alert(JSON.stringify(data));

如果显示对象,那么您可以继续进行检查,否则请检查创建对象的php文件。

如果成功接收到ajax对象,则需要使用jQuery.parseJSON解析json对象。

例如:

response = jQuery.parseJSON(data);

现在,您有了一个名称response的javascript对象。

现在使用它

ajax成功时的response['status']response['message']

检查代码,首先丢弃:“来自PHP代码$ message变量

if(!isset($percent)) {
    //echo("Invalid code: '" . $dCode ."'");
    $message = "Invalid code: '" . $dCode ."'";
    echo json_encode(array('status' => 'error','message' => $message));
} else {
    $message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
    echo json_encode(array('status' => 'success', 'message' => $message));
}

然后使用对字体结束成功函数的响应:

success: function(data) {

            $('#status_msg').html(data.message);
            $('#status_msg').fadeIn(0);

        },

这样在ajax()设置数据。

success: function(data) {
            var result = eval(data);
            $('#status_msg').html(result.message);
            $('#status_msg').fadeIn(0);
            //bootbox.alert(data);
        },
        error: function(data) {
            var result = eval(data);
            $('#status_msg').html(result.message);
            $('#status_msg').fadeIn(0);
            //bootbox.alert("Error validating discount code: " + JSON.stringify(discount_code));
        }

if(!isset($percent)) {
    //echo("Invalid code: '" . $dCode ."'");
    $message = "Invalid code: '" . $dCode ."'";
    echo json_encode(array('status' => 'error','message' => $message));
} else {
    $message = "Code: '" . $dCode . "'" . " provides a " . $percent . "% discount.";
    echo json_encode(array('status' => 'success', 'message' => $message));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM