0

我遇到了一个问题,我成功地以mywebsite.com/contact/?product=VAR1的形式将 URL 变量从一个页面设置到另一个页面,并且它将在第二页上用我的简单的代码。

第一次使用很好,但之后的任何事情都不是。变量没有被清除/重新读取/重置有问题。URL 栏甚至在 URL 栏中读取良好 mywebsite.com/contact/?product=VAR2以便第一部分工作。

但是一旦存储了 VAR1,代码就不想获取 VAR2 部分。一旦加载一次,它就会不断重新显示 VAR1。

<?php echo htmlentities($_GET['product']); ?>

如果它有所作为,我将成功地在 jQuery 值更改器中显示?product=信息:

$(".input-text").val('<?php echo htmlentities($_GET['product']); ?>');

我已经尝试过自己的解决方案,例如放入unset($product); 在最后一个?>之前,但无济于事。

我对 PHP/jQuery 的了解有限,并且想使用这种设置/抓取变量的方式,因为它很简单。我在 jQuery 中使用它,因为它可以使用传递的这个变量重写确切的表单输入框值,并成功地将它发送到我的 CMS 的联系表单中。

------------------------ 更新:添加代码 ---------- --

(我只是在逻辑上显示我能想到的所有代码)

#1:在 URL 中设置变量。第一个 echo getURL 显示 url,我添加我的 ?product= 然后它获取项目名称。这一切都很好。

<a href="<?php echo Mage::getURL('webforms/index/index/id/2') ?>?product=<?php echo $_product->getName(); ?>">

#2:我的表单是在我的 CMS 中设置的。它有一个特殊的类,所以我可以在我的 jQuery 中准确地选择它。我无权访问所有这些,它是由 CMS 生成的。目的很明显是通过这个变量让选定的产品被记住,并在联系表中服务。

<div class="field webforms-fields-enquiryfield">
<label for="field_20">
Product in Enquiry
</label>
<div class="input-box">
<input type="text" name="field[20]" id="field[20]" class="input-text" style="" value="">                        
</div>
</div>

#3:现在我的显示区域和&变量都设置好了,我们使用jQuery将变量插入到输入文本表单的实际值中。我这样做是因为在我的 CMS 中我无法简单地添加它。我必须使用 jQuery 来替换文本(无论如何都是空框)。

$(".webforms-fields-enquiryfield .input-text").val('<?php echo htmlentities($_GET['product']); ?>');

希望这更有意义。

4

1 回答 1

0

我已经找到了答案,问题是 CMS Magento 喜欢缓存某些块 - 这就是为什么我可以先查看它,然后我的 CMS 会存储变量但不会删除它。无论我尝试禁用缓存的修复方法是什么,都不行。

相反,我最终使用了以下代码,使用 # 变量和一些任何人都可以理解的简单 JavaScript。毫无疑问,我将在未来的项目中使用它!非常容易的变量传递...

if(window.location.hash) {

var hash_value = window.location.hash.replace('#', '');

  $("my-css-input-field-or-whatever-you-want").val(hash_value);

}

我想现在可以以多种方式使用 hash_value,这在我的 Magento 设置中运行良好,它不会被缓存/存储。而是获取 URL 位置和哈希值。

(并且使用的 PHP 简化了任何人都可以在 CMS 中替换/重用)

<a href="[GetBaseURLfromCMS]#[MyDynamicVariableHere] ">
于 2013-02-26T00:30:22.137 回答