文本交换后保存文本

时间:2015-05-31 15:34:06

标签: javascript php jquery html

我正在创建送货状态报告以及我想要完成的工作,我似乎无法弄明白。在我的报告表中,我有一个按钮,它显示" Mark as Shipped"。如果我点击该按钮,它会改为说"发货"。这对我来说就像一个简单的报告方法一样。

我正在进行文本交换......

<script>
//Getting Shipping Status button to chance from 'mark as shipped' to 'shipped'
$("button").on("click", function(e) {
    e.preventDefault()
    var el = $(this);
    el.text() == el.data("text-swap") 
    ? el.text(el.data("text-original")) 
    : el.text(el.data("text-swap"));
});
</script>

我必须添加

e.preventDefault()

进入代码,因为单击按钮后页面会重新加载。

我遇到的一个问题是它不允许我回到原版。我尝试将e.preventDefault()移到该代码的底部,但它没有帮助。

现在我的问题的主要部分是我希望在我选择它之后能够保存。我不确定我是否必须抓住我正在做的事情,将其存放在数据库中,或者如果我能用我现有的代码执行它...我绝对需要它来保存一次虽然选择。

然后最后一件事。我只是按一下按钮就不知道怎么做。我知道如何使用php,但我对JS很新。

当我选择&#34;标记为已发货&#34;我想要一个d-t -y的时间戳,并在我的td行中添加时间。这可能与JS有关吗?

我正在寻找能够完成所有这些工作的方法。我看了一遍,似乎找不到任何类似于我想要的东西。

有什么想法吗?

更新

我将它全部添加到指示的相同脚本中。现在我的按钮根本没有变化,也没有任何东西发送到数据库。

<script>
$.ajax({
    url: "shippingStatusSend.php",
    data: {action: "Shipped", order: order_id},
    type: "POST",
    dataType: "text"
}).done(function(r){
    //Do your code for changing the button here.
    //Getting Shipping Status button to chance from 'mark as shipped' to 'shipped'
$("button").on("click", function(e) {
    e.preventDefault()
    var el = $(this);
    el.text() == el.data("text-swap") 
    ? el.text(el.data("text-original")) 
    : el.text(el.data("text-swap"));
});
});

</script>

PHP页面名为shippingStatusSend.php

我刚开始学习如何做好准备好的陈述,所以这也可能是一个问题。

<?php
//connection to db
$con = mysqli_connect("localhost", "root", "", "bfb"); 

//Check for errors  
if (mysqli_connect_errno()) {
    printf ("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
    $order_id = trim($_POST['order_id'] );
    $status = trim($_POST['action'] );

/* create a prepared statement */
if ($stmt = mysqli_prepare($con, "INSERT INTO shippingStatus (order_id, status, date_Shipped) VALUES (?, ?, NOW())")) {

/* bind parameters for markers */
            $stmt->bind_param('is', $order_id, $status);

            /* execute query */
            $stmt->execute();


        /* close statement */
        mysqli_stmt_close($stmt);
            }
 ?>     

1 个答案:

答案 0 :(得分:1)

为了使JavaScript更改为静态,您需要使用某些服务器端,例如使用PHP将更改存储在数据库中。

为此,您需要使用AJAX,这很容易使用jQuery:

$.ajax({
    url: "example.php",
    data: {action: "Shipped", order: orderID},
    type: "POST",
    dataType: "text"
}).done(function(r){
    //Do your code for changing the button here.
});

example.php更改为将成为更改服务器端的PHP脚本,并确保通过您正在更改的订单的orderID。在PHP文件中,您可以访问$_POST['action']$_POST['order']以从JavaScript获取信息。

然后在done部分(在AJAX完成后调用),您可以更新按钮。你也可以在那里进行一些错误检查以确保安全。 r变量可以用于PHP文件中的任何响应数据(例如,如果您回复&#34;完成&#34;在PHP中,r将等于&#34;完成&# 34。)

修改

根据您更新的问题/代码,您的问题是您在页面加载时创建AJAX调用,而不是在按钮单击时创建。将其更改为:

$("button").on("click", function(e) {
    e.preventDefault();
    var el = $(this);
    $.ajax({
        url: "shippingStatusSend.php",
        data: {action: "Shipped", order: order_id},
        type: "POST",
        dataType: "text"
    }).fail(function(e,t,m){
        console.log(e,t,m); 
    }).done(function(r){
        //Do your code for changing the button here.
        //Getting Shipping Status button to chance from 'mark as shipped' to 'shipped'
        el.text() == el.data("text-swap") 
        ? el.text(el.data("text-original")) 
        : el.text(el.data("text-swap"));
    });
});

<强>更新 要获得order_id,您需要将其存储在DOM中的某个位置。根据您的意见,您可以在:

<td class="tdproduct"><?php echo $row['order_id']; ?> </td>

类似于:

var order_id = $('.tdproduct').text();

将获取id,但前提是你只有一个元素。否则你必须存储一些其他独特元素才能抓住。

在重新加载时保存

在数据库中保存了值后,您需要让PHP在页面加载时进行渲染。不要让静态html说Mark as Shipped,而是使用PHP echoprint从数据库输出信息。