【问题标题】:How to add parameters to the URL along with the form data?如何将参数与表单数据一起添加到 URL?
【发布时间】:2015-06-11 08:33:45
【问题描述】:

我正在尝试使用表单将一些数据发送到一个 php 文件,我将在其中将参数保存到数据库中。在这里,我可以发送表单数据,但不能发送我想要发送的参数。

这是我写的 JavaScript 代码

function formload() {
$('form').submit(function(event) {

    $('.form-group').removeClass('has-error');
    $('.help-block').remove(); 
    var formData = {
        'firstname'         : $('input[name=firstname]').val(),
        'lastname'          : $('input[name=lastname]').val(),
        'email'             : $('input[name=email]').val(),
        'telephone'         : $('input[name=telephone]').val(),
        'address1'          : $('input[name=address1]').val(),
        'address2'          : $('input[name=address2]').val(),
        'city'              : $('input[name=city]').val(),
        'zip'               : $('input[name=zip]').val(),
        'state'             : $('input[name=state]').val(),
        'country'           : $('input[name=country]').val(),
        'Product'           : '&model=1&quantity=3&model=2&quantity=2'
    };
    $.ajax({
        type        : 'GET',
        url         : 'http://localhost/test/www/checkout.php',
        data        : formData,
        dataType    : 'json',
        encode      : true
    })
        .done(function(data) {

            console.log(data); 

            if ( ! data.success) {

                if (data.errors.fname) {
                    $('#firstname-group').addClass('has-error');
                    $('#firstname-group').append('<div class="help-block">' + data.errors.name + '</div>');
                }

                if (data.errors.fname) {
                    $('#lastname-group').addClass('has-error');
                    $('#lastname-group').append('<div class="help-block">' + data.errors.name + '</div>');
                }

                if (data.errors.email) {
                    $('#email-group').addClass('has-error');
                    $('#email-group').append('<div class="help-block">' + data.errors.email + '</div>');
                }

                if (data.errors.telephone) {
                    $('#telephone-group').addClass('has-error');
                    $('#telephone-group').append('<div class="help-block">' + data.errors.name + '</div>');
                }

                if (data.errors.address1) {
                    $('#address1-group').addClass('has-error');
                    $('#address1-group').append('<div class="help-block">' + data.errors.email + '</div>');
                }

                if (data.errors.city) {
                    $('#city-group').addClass('has-error');
                    $('#city-group').append('<div class="help-block">' + data.errors.email + '</div>');
                }

                if (data.errors.zip) {
                    $('#Zip-group').addClass('has-error');
                    $('#Zip-group').append('<div class="help-block">' + data.errors.email + '</div>');
                }

                if (data.errors.state) {
                    $('#state-group').addClass('has-error');
                    $('#state-group').append('<div class="help-block">' + data.errors.email + '</div>');
                }

                if (data.errors.country) {
                    $('#country-group').addClass('has-error');
                    $('#country-group').append('<div class="help-block">' + data.errors.email + '</div>');
                }
                if (data.errors.products) {
                    $('#Product-group').addClass('has-error');
                    $('#Product-group').append('<div class="help-block">' + data.errors.email + '</div>');
                }

            } else {

                $('form').append('<div class="alert alert-success">' + data.message + '</div>');

                window.location = 'http://www.dekhodaily.com';

            }
        })

        .fail(function(data) {
            console.log(data);
        });
    event.preventDefault();
 });
}

这里的 formdata 是我要发送的内容,同时我还想发送 product 参数。

【问题讨论】:

    标签: javascript json url


    【解决方案1】:

    由于您有不止一组相同的名称,model 和 quantity 会重复,所以我假设它是一个数组。只需将其更改为:

    var formData = {
        'firstname'         : $('input[name=firstname]').val(),
        'lastname'          : $('input[name=lastname]').val(),
        'email'             : $('input[name=email]').val(),
        'telephone'         : $('input[name=telephone]').val(),
        'address1'          : $('input[name=address1]').val(),
        'address2'          : $('input[name=address2]').val(),
        'city'              : $('input[name=city]').val(),
        'zip'               : $('input[name=zip]').val(),
        'state'             : $('input[name=state]').val(),
        'country'           : $('input[name=country]').val(),
        'Product'           : [{
                "model": 1,
                "quantity": 3
            },
            {
                "model": 2,
                "quantity": 2
            }
        ]
    };
    

    【讨论】:

    • 以防我不知道数组的大小。我怎样才能包含所有模型
    • 如果我将它作为一个数组发送,如何将相同的数组转换为 php 文件中的单个值?
    • 另一件事。如果我使用 location.search 从另一个 url 获取产品数据,那么我将如何将其添加到我当前的 url
    • 因为不知道大小只有你必须这样做...查看 PHP 中的 var_dump($_POST) 并查看它是如何呈现的。
    【解决方案2】:

    其实你可以通过两个函数来实现:

    用这个方法编码你的 JSON 对象:

    jquery.param

    这段代码:

    var params = { width:1680, height:1050 };
    var str = jQuery.param( params );
    $( "#results" ).text( str );
    

    将返回width=1680&amp;height=1050

    并用这个将 url 解码为 JSON:

    jquery.getJSON

    使用此代码:

    $.getJSON('http://yoururl.com/index.html?param1=value1&param2=value2', function(data) {
        // the JSON is in the data variable
    });
    

    (代码来自:How to get JSON from URL in Javascript?)

    【讨论】:

    • 如果我使用 location.search 从另一个 url 获取产品数据,那么我将如何将其添加到我当前的 url
    • (我更正了帖子中的代码)。我真的不明白你想要什么。如果您只需要添加参数,请在您的formData var 中添加param : value。
    • 我完全改变了我的答案以适应你想要的。
    • 我想在这个 url 中传递的参数有两种..1)它是表单数据 2)它是我从另一个参数中获得的数据..我已经开发了一个结帐我通过购物车中的 url 获取产品详细信息的流程。我从 url 中取出 products 参数并将其与表单数据一起添加,然后将其发送到提取并保存所有数据的 php 文件。现在我的疑问是如何从购物车的url中获取参数,在结账时将其与表单数据一起添加并转发到php文件中。
    • 他们使用第二个函数 (jquery.getJSON) 来检索 URL 中的参数,或者在 javascript 代码中使用类似的 PHP 代码:&lt;?php echo $_GET[param]; ?&gt;。
    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    相关资源
    最近更新 更多