2013-04-22 27 views
1

我碰到了一些障碍,而不是恢复使用表单,我想看看我是否可以做这项工作。我正在使用onclick事件向数据库添加一个值,其中一部分是一个url。这是我的代码;jQuery .load URL中的URL

<a onclick="$(this).load(encodeURI('a_addprice.cfm?productid=#productid#&price=#price#&stockstatus=#stockstatus#&deeplink=#deeplink#&provider=#provider#&supplier_name=#supplier_name#&itemref=#itemref#&storeid=#storeid#'));">Add</a> 

(井号标签的都与我的后端语言,ColdFusion的 - 对于那些不知道)

在纯HTML,这是它是什么样子;

<a onclick="$(this).load(encodeURI('a_addprice.cfm?productid=1&price=10.99&stockstatus=In Stock&deeplink=http://www.supplier.com/?product=1&something=2&provider=providername&supplier_name=supplier_name&itemref=ABC1&storeid=123'));">Add</a> 

我遇到的问题是与这部分(deeplink);

http://www.supplier.com/?product=1&something=2 

当执行操作时,它忽略了URL过去的所有内容?product = 1。当然,这是有道理的,因为URL的结构方式 - 如果没有,它也会增加'& provider = ... etc作为深度链接的一部分。

我想知道的是,是否还有一种方法可以继续使用这种方法,或许可以隔离深层链接,以便将其纳入其中。

这个包含的页面大约有100行,所以我基本上试图避免有100个表单,以及每个表单需要的所有额外隐藏变量。

回答

1

我觉得你已经把使用encodeURI在错误的部分

$(this).load(
'a_addprice.cfm?productid=#productid#&price=#price#&stockstatus=#stockstatus#&deeplink='+ 
encodeURI('#deeplink')+ 
'#&provider=#provider#&supplier_name=#supplier_name#&itemref=#itemref#&storeid=#storeid#')); 

此外,我会强烈建议您更改为类似#URLEncodedFormat(deeplink)#

,并有像

<a class="deeplink" 
href="a_addprice.cfmproductid=#productid#&price=#price#&stockstatus=#stockstatus#&deeplink= #URLEncodedFormat(deeplink)#&provider=#provider#&supplier_name=#supplier_name#&itemref=#itemref#&storeid=#storeid#">...</a> 

链接并使用

$(function() { 
    $(".deeplink").on("click",function(e) { 
    e.preventDefault(); 
    $("someResultContainer").load(this.href); 
    }); 
}); 
+0

感谢您的回复。我放弃了encodeURI的使用,并采用了你的第二个建议,它完美地工作 - 谢谢你! – Lee 2013-04-22 10:03:51

+0

不客气 – mplungjan 2013-04-22 11:16:53

相关问题