ajax/php响应添加了不需要的br标记


ajax / php response adding unwanted br tag

由于某种原因,我从PHP函数的响应中不知从哪里得到了一个<br/>标记。。。

这是ajax:

var paid_value = 'Paid';
$.ajax({
    url: 'http://localhost/myshop/owe_money/add_paid.php',
    type: 'post',
    data: { paid_value:paid_value } ,       
    beforeSend: function() {
        $("#ajax-result").html('Before');
    },  
    success: function(data) {
        $("#ajax-result").html(data);
        $('input[name="mark_as_paid"]').val(data);
    },
    error: function(xhr, ajaxOptions, thrownError) {
        $("#ajax-result").html('Error');
    }
});

和PHP:

function add_paid() {
    include('../db_connect.php');
    $paid_value = $_POST['paid_value'];
    if (is_numeric($paid_value)) {
        $sql = "UPDATE paid SET first_item = $paid_value";
    } else {
        $sql = "UPDATE paid SET first_item = '".$paid_value."'";            
    }
    if (mysqli_query($connect, $sql)) {
        echo $paid_value;
    } else {
        echo "Unsuccesful".mysqli_error($connect);
    }
    die;
}
add_paid();

我的回答应该只是简单地说"付费",而不是说"<br />付费"。

从表面上看,它看起来很不错。你可能会发现br正在其他地方。也许它已经在文件中了?

如果它发现它进入了$_POST变量,你可以暂时破解这个问题,使用

 $paid_value = strip_tags($_POST['paid_value]);

这个答案没有任何保证!

在jQuery代码中,将success块更改为:

success: function(data) {
                $("#ajax-result").html(data);
                $('input[name="mark_as_paid"]').val(data);
                console.log(data)
            },

在浏览器中打开调试器并查看控制台。这将写入从PHP脚本发送的数据的值,并且可能有也可能没有换行符。我怀疑换行符可能来自第一页,但这将允许您看到这一点。

我看不出代码有任何问题,所以我认为这与您显示结果的表单/输入有关——您没有包括这一点。

您可以在成功的ajax 中使用替换标记

data.replace("but the br tag","");

但它仍将存在于数据库