通过 url 和 jQuery 传递值的更好方法
A better way to pass values through url with jQuery
我正在使用表单插件的 Wordpress 网站上工作。该插件使用一种不寻常的方法来 post 表单值,并且似乎不支持传递任何 $POST 或 $GET 变量的方法。 IE。 print_r on $POST returns 一个空数组。奇怪的是插件还"requires" 表格的动作是空白的。基本上它所做的就是在提交数据后将您重定向到 "thank you page"。
我需要在后续表单中预填充一个单一字段,所以我想到了使用 javascript 将所需变量传递给 "thank you page" url真正导致后续表格。通常这个 url 应该被硬编码为表单中的隐藏字段,但我决定即时创建它。遗憾的是,我对 jQuery 比 js 更熟悉,所以我决定改用它。
所以无论如何我使用下面的代码让它工作,但感觉有更好的方法,并且担心我这样做的方式可能会有一些无法预料的后果。
$('#address').keyup(function () {
string = this.value; //store value from address input field
string = string.replace(/\s/g,"%20"); // Replace spaces
var url = "http://example.com/?page_id=156"; // url to thank you page
jQuery('#thankyou').html('<input type="hidden" name="thank_you_page" value="' + url + '&property=' + string + '" type="text">'); // add the required hidden field to the form
});
而不是使用 jQuery 注入。您可以简化并直接将隐藏的内容添加到带有 ID 的表单中。
例如
<form>
<input id="thank_you_page_field" type="hidden" name="thank_you_page" value="" type="text">
</form>
然后只需使用 jquery 来填充它。
例如
$('#address').keyup(function () {
string = this.value; //store value from address input field
string = string.replace(/\s/g,"%20"); // Replace spaces
var url = "http://example.com/?page_id=156"; // url to thank you page
url += '&property=' + string
jQuery('#thank_you_page_field').val(url) // update the value.
});
也代替了
string = string.replace(/\s/g,"%20"); // Replace spaces
试试 encodeURIComponent() - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
最终代码可能如下所示
$('#address').keyup(function () {
var url = "http://example.com/?page_id=156"; // url to thank you page
url += '&property=' + this.value //append the value
$('#thank_you_page_field').val(encodeURIComponent(url)) // update the value
});
我正在使用表单插件的 Wordpress 网站上工作。该插件使用一种不寻常的方法来 post 表单值,并且似乎不支持传递任何 $POST 或 $GET 变量的方法。 IE。 print_r on $POST returns 一个空数组。奇怪的是插件还"requires" 表格的动作是空白的。基本上它所做的就是在提交数据后将您重定向到 "thank you page"。
我需要在后续表单中预填充一个单一字段,所以我想到了使用 javascript 将所需变量传递给 "thank you page" url真正导致后续表格。通常这个 url 应该被硬编码为表单中的隐藏字段,但我决定即时创建它。遗憾的是,我对 jQuery 比 js 更熟悉,所以我决定改用它。
所以无论如何我使用下面的代码让它工作,但感觉有更好的方法,并且担心我这样做的方式可能会有一些无法预料的后果。
$('#address').keyup(function () {
string = this.value; //store value from address input field
string = string.replace(/\s/g,"%20"); // Replace spaces
var url = "http://example.com/?page_id=156"; // url to thank you page
jQuery('#thankyou').html('<input type="hidden" name="thank_you_page" value="' + url + '&property=' + string + '" type="text">'); // add the required hidden field to the form
});
而不是使用 jQuery 注入。您可以简化并直接将隐藏的内容添加到带有 ID 的表单中。
例如
<form>
<input id="thank_you_page_field" type="hidden" name="thank_you_page" value="" type="text">
</form>
然后只需使用 jquery 来填充它。
例如
$('#address').keyup(function () {
string = this.value; //store value from address input field
string = string.replace(/\s/g,"%20"); // Replace spaces
var url = "http://example.com/?page_id=156"; // url to thank you page
url += '&property=' + string
jQuery('#thank_you_page_field').val(url) // update the value.
});
也代替了
string = string.replace(/\s/g,"%20"); // Replace spaces
试试 encodeURIComponent() - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent
最终代码可能如下所示
$('#address').keyup(function () {
var url = "http://example.com/?page_id=156"; // url to thank you page
url += '&property=' + this.value //append the value
$('#thank_you_page_field').val(encodeURIComponent(url)) // update the value
});