【问题标题】:Pass hash in URL with jquery and make mysql query使用 jquery 在 URL 中传递哈希并进行 mysql 查询
【发布时间】:2017-03-21 18:16:20
【问题描述】:

好的,所以我有这种情况。 我有一个叫做技能的表,有一个简单的模式

id|name

It has records like

1|Cashier
2|Software Developer
3|C#
4|C# 3.0
5|C# Programming

所以,在前端我有一个带有下拉菜单的文本框,它可以进行 ajax 调用,并在您键入时用 ajax 调用的结果填充下拉列表,例如

    $.getJSON(that.path + "?q=" + encodeURIComponent(keyword) , function(result){
        if (result.length == 0) {

得到匹配的结果。

如果我搜索“软件”和“收银员”等词,我会得到正确的结果。 但问题是当我搜索任何带有“#”符号的技能时。

that.path 引出一个php函数

public function findSkills() {
    print_r($_GET['q']);

如果我想搜索所有带有“#”的技能,我的 ajax 调用 URL 会变成类似

http://somedomain.xyz/skills/findSkills?q=%23

然后当我打印 $_GET['q'] 时,我什么也没打印。 我该如何克服这个问题?

预期的 SQL 查询

SELECT * FROM skills  WHERE (`name` LIKE '%#%') ORDER BY `id` ASC  LIMIT 10

我已经读到,在哈希(包括哈希)之后的 URL 中的任何部分都不会发送到服务器。 如果是这种情况,是否有其他方法可以实现这一点,让我可以使用“#”获取记录的 SQL 查询?

任何帮助都将不胜感激。如果需要,请让我知道我是否缺少任何其他数据/更多代码。我会相应地更新问题。

【问题讨论】:

  • 我认为这应该可以使用$_POST 而不是$_GET
  • 或者您可以在 javascript 中检查是否正在尝试发送 # 并将其更改为自定义值,并检查服务器是否设置了自定义值。

标签: php jquery mysql ajax getjson


【解决方案1】:

对我来说,它适用于以下测试 sn-p:

if (isset($_GET['q'])) {
  echo json_encode($_GET['q']);
  exit;
}
?>
<form>
  <input name="q" id="q">
  <button>Submit</button>
</form>
<script src="http://code.jquery.com/jquery-1.11.3.js"></script>
<script>
$('button').click(function() {
  $.getJSON(
    'test.php?q=' + encodeURIComponent(q.value),
    function(result) {
      $('body').append($('<p>' + result + '</p>'));
    }
  );
  return false;
});
</script>

值得一提的是,查看 HTTP 请求(使用 Firebug 等工具)并输入例如C# 报告:

GET /test/stackOverflow/test.php?q=C%23 HTTP/1.1

当使用 'test.php?q=' + q.value 而不是 'test.php?q=' + encodeURIComponent(q.value) 时,它会报告:

GET /test/stackOverflow/test.php?q=C HTTP/1.1

换句话说,虽然“哈希后的 URL 中的任何部分(包括哈希)都不会发送到服务器”是真的,但在使用 encodeURIComponent() 时完全绕过了这条规则。

因此,它确认了,如果你按照你展示的那样编写它应该工作。
您当前的问题可能是某个地方的一个简单的其他错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2010-12-21
    • 2012-04-22
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多