2016-09-19 54 views
0

我有一个问题与我的分页时,查询中有一些撇号。 这是我使用创造分页什么:问题与分页中的撇号

<script type="text/javascript"> 
    $('#pagination-demo').twbsPagination({ 
     totalPages: 50, 
     visiblePages: 5, 
     prev: '<', 
     next: '>', 
     first: '<<', 
     last: '>>', 
     href: 'http://www.monsite.com/search/index.php?a=web&q={$query}&page={{number}}', 
     onPageClick: function (event, page) { 
       $('#page-content').text('Page ' + page); 
     } 
    }); 
</script> 

例如,对于与分页消失在我的网页的话“德企业公司”的搜索。

如果我把它写这样的“d企业公司”,分页是确定的,我有此链接:

有人有一个想法? 我有义务做一个“替换”或类似的东西,改变我的撇号? 或者有一种方法可以将其保存在我的查询和分页中?

+0

“{$ query}”和“{{number}}'从哪里来?你可能想要urlencode那些? – adeneo

+0

使用'urlencode()'编码URL中的特殊字符。 – Barmar

+0

嗨,谢谢你的回复:) 我真的是小白,对不起。 我必须说,我不知道'{{number}}'从哪里来,我没有在我的PHP页面上。但这仍然有效... '{$ query}'是从我的PHP页面我想,它是这样的:\t'$ query = rawurldecode($ _ GET ['q']);' – tonarii

回答

0

这是因为你正在导致JS语法错误,通过直接从PHP文本转储到JavaScript上下文。例如。验证码:

$foo = "D'Enterprise"; 

echo "<script> var foo = '$foo';</script>"; 

会派给用户:

var foo = 'D'Enterprise'; 
      ^-^----start/stop string 
       ^^^^^^^^^^--- "Enteprise" - undefined variable 
         ^^--- start an unterminated string 

如果您想要一个任何种类的基本调试的,比如检查浏览器的控制台,你会看到错误。

简而言之,绝不会从PHP直接输出文本到“外部”上下文中,特别是如果该上下文是某种其他语言。您可以轻松地使用该语言导致语法错误(与您现在正在执行的操作完全相同)。始终使用适当的输出方法,其为PHP生成JavaScript,是使用JSON:

$foo = "D'Enterprise"; 
$temp = json_encode($foo); 

echo "<script> var foo = $temp; </script>"; 

产生

var foo = 'D\'Enterprise'; 

并且是完全有效的JS代码。

+0

Hello Marc B, 感谢您的回答。 :) 我看到在控制台中的问题,但这只是写SyntaxError,这就是为什么我看这里和其他地方。 好的,所以我需要json编码我的查询之前,在我的JavaScript使用它,我是吗? – tonarii

+0

是的。无论您从PHP ** HAS **输出的内容是否适用于将其输出到的上下文。由于该上下文是一个JavaScript,你的PHP输出必须是有效的JS字符串内容。 –

+0

好的,谢谢,我解决了它:) – tonarii