-2

我想以此作为开头,“我是个菜鸟,所以请像我五岁一样解释。” 我已经查看了这个常见问题的很多答案,但我无法为我的特定问题找到合适的答案。下面是有问题的脚本位。当前,用户输入订单号。这通过 ajax 调用发送到 php 处理器脚本。处理器脚本验证订单号,然后发回数据。如果 data !="NO" 我们被发送到一个新页面。

<script type="text/javascript">
function resetTextFields()
{
    $("#orderNum").val("");                
}

function onSuccess(data, status)
{
    resetTextFields();
    // Notify the user the new post was saved
    $("#message").fadeIn(2000);
    data = $.trim(data);
    if(data != "NO")
    {
        location.href="labOrders.php";
    }
    else
    {
        $("#message").css("background-color", "#ff0000");
        $("#message").text("Not a valid order number...");
    }
    $("#message").fadeOut(2500);
}

$(document).ready(function() {
    $("#submitSearch").click(function(e){

        var formData = $("#labOrderFind").serialize();

        $.ajax({
            type: "POST",
            url: "labSearch.php",
            cache: false,
            data: formData,
            success: onSuccess
        });

        e.preventDefault();
    });


});

我想做的是 onSuccess 如果数据!=“否”,再次将 formData 发布到 labOrders.php,以便 labOrders.php 可以使用它对数据库进行更多查找。我尝试了很多方法,但我没有成功。我会以错误的方式解决这个问题吗?只要我们可以使用 POST,我对所有解决方案都持开放态度。

额外信息:jquery 和 jquery.mobile 加载在头部(它是一个平板应用程序)。

也许stackoverflow需要一个noob标签来解决这样的问题。

4

2 回答 2

0

改变

location.href="labOrders.php";

$("#labOrderFind").submit();

“labOrderFind”的“action”必须是“labOrders.php”,如果你要使用labOrders.php中的订单号,不要重置它的值。

于 2012-07-24T17:35:14.997 回答
0

我解决了我自己的问题。以下是我的解决方案,以防其他人将来遇到此类问题。

我找到了这个功能。

function post(URL, PARAMS) {
    var temp=document.createElement("form");
    temp.action=URL;
    temp.method="POST";
    temp.style.display="none";
    for(var x in PARAMS) {
        var opt=document.createElement("textarea");
        opt.name=x;
        opt.value=PARAMS[x];
        temp.appendChild(opt);
    }
    document.body.appendChild(temp);
    temp.submit();
    return temp;

}

然后我稍微修改了我的 onSuccess 函数:

    function onSuccess(data, status)
{
    data = $.trim(data);
    if(data != "NO")
    {
                    post("labOrders.php", {
                        orderNum:data
                    })
    }
    else
    {
            resetTextFields();
        $("#message").css("background-color", "#ff0000");
        $("#message").text("Not a valid order number...");
    }
    $("#message").fadeOut(2500);
}
于 2012-07-25T14:48:47.793 回答