在传递给PayPal之前使用JQuery更新表单字段

时间:2012-09-21 21:07:39

标签: php jquery mysql ajax

我花了一天时间研究jquery,因为我认为它可以让我这样做。我有一个贝宝形式,我想要“onClick”按钮将此字段发送到我的sql表

<input type="hidden" name="amount" id="amount" value="0.05">

同时我的PayPal按钮正在执行此操作:

<input class="btn btn-primary" onClick="send()" type="submit" value="Subscribe">

如何将此值传递给我的process_plan.php?到目前为止,我已经拥有了它,但它已经悬挂而且无法正常工作。

function send() {
    var id = $('#amount').val();
    var result;
    $.ajax({
        type: "POST",
        url: "process_plan.php",
        data: {
            "amount" : amount
        },
        async: true,
        dataType: "html",
        success: function(response) { 
            result = response;
        },
        error: function(response) {
            alert("Oh no! An error occured!");
        }
    });
    return result;
}

如果代码真的很糟糕,我很抱歉 - 这是我第一天研究Jquery和Ajax。

3 个答案:

答案 0 :(得分:1)

不知道这是不是问题,但我认为你的代码中有一点错误。

请尝试: ... data: { amount : "amount" }, ...

如果金额也是var,请删除“

答案 1 :(得分:1)

使用firefox或fiddler(http://www.fiddler2.com/fiddler2/)等firebug工具查看请求和响应。它会告诉你沟通的方式。

据说它没有悬挂。你的send()函数是异步发布一个值,这意味着在进行ajax调用时function send()将返回。您不能依赖函数返回时设置的结果。这就是你在调用中有一个回调函数的原因:

success: function(response) { 
            result = response;
        },

这将在呼叫完成后运行,通常在发起功能完成后运行。要查看它的实际效果,请将其更改为:

success: function(response) { 
            window.alert("Response: " + response);
        },

然后,您可以在成功功能中提交表单,方法是选择表格并手动调用提交:

success: function(response){
    $('#form-id').submit(); 
}

有关ajax怪癖的更多信息,请参阅此msdn:https://developer.mozilla.org/en-US/docs/AJAX

变量amount在哪里定义?我觉得您想要使用id代替:

data: {
            "amount" : id
        },

答案 2 :(得分:1)

我认为还有另一个错误!您将变量'id'设置为字段的值,然后在帖子的数据中发送未定义的变量'amount'。这会解决它:

var amount = $('#amount').val();