0

当我单击以下代码呈现的页面上的提交按钮时,我希望我的网址看起来像 locl.cms.com/upload/season.php?sid=20&currentPage=1

echo '<form action="" method="get"> 
  <button id="previouspage" name="'.$encodedURL.'" type="submit" 
    value="'.$page.'">Previous Page</button> 
  <button id="nextpage" name="currentPage" type="submit" 
    value="'.$pageN.'">Next Page</button> 
  </form>'; 
echo "Inside Div"; 
echo '</div>'; 

在哪里

$url='sid='.$sid.'&currentPage';
$encodedURL=urlencode($url);

当我点击Previous Page按钮时,我的网址变成locl.cms.com/upload/season.php?sid%253D20%2526currentPage=1

我究竟做错了什么?

4

1 回答 1

0

当您提交带有 的表单时method="get",表单的action属性将变为 URL,并且包括按钮在内的表单输入元素有助于name=value附加到 URL 的查询字符串,然后将其发送到服务器。在这里,名称和值将被 URL 编码(这就是您在 OP 中看到的特殊字符)。

// The URL making pseudo code ( run by the browser )

if ( form.method is-fully-qualified-with-protocol-etc )
    base_url = form.action
elseif ( form.action is-full-path-begining-with-forward-slash )
    base_url = page.protocol+'://'+page.url.hostname+':'page.url.port+form.action
elseif ( form.action is-a-relative-path-or-blank )
    base_url = page.url+form.action

encoded_form_input = ''
for-each ( form.input_elements as input_element )
    encoded_form_input += urlencode(input_element.name) + '=' + urlencode(input_element.value) + '&'

final_url = base_url + '?' + encoded_form_input;

编码到 URL 中的一组输入的一个例外是button输入,它只会是您按下的按钮。其他按钮被忽略。

希望这可以为您提供一些提示,说明为什么您没有得到您期望的 URL。

于 2013-10-10T11:11:02.967 回答