所以这是我的情景。我有一个页面,让我们使用“http://www.pearlsquirrel.com/listen.php?u=161”在页面加载它通过ajax加载一个文件,ajaxlinklisten.php到我的listen.php页面上的div jQuery的。在我的ajaxlinklisten.php页面中,我有以下代码:
if (isset($_GET['u']));
{
$music3 = mysql_real_escape_string($_GET['u']);
但是,由于某种原因,ajaxlinklisten无法获取变量u,在这种情况下等于161.这个变量很重要,因为我用它来处理页面的其余部分。我不知道这是否是因为我使用jquery加载页面而引起的,但我需要找到一个解决方法。有谁知道如何解决这个问题?谢谢!
答案 0 :(得分:1)
这是因为当您通过AJAX加载页面时,它没有获取变量,它将与原始负载分开处理。将数据传递给:
data: 'u=' + <?php echo $_GET['u']; ?>,
在您网页的ajax部分。
修改强>
我想你的ajax是这样的:
$.ajax({
url: a_cross_domain_url,
success: function(data){
*do stuff
}
});
添加更多
$.ajax({
data: 'u=' + <?php echo $_GET['u']; ?>,
type: GET,
url: a_cross_domain_url,
success: function(data){
*do stuff
}
});
这取决于你如何实现脚本,但这应该可以让你到达目的地。
答案 1 :(得分:1)
您无法使用PHP并使用javascript URL解析器,这是我提出的快速解决方案(我相信您可以使用正则表达式进行更好的实现)。
如果您的网址是“www.example.com?foo=bar&u=160,此函数将返回一个对象{foo:”bar“,u:”160“}。
function parseUrl()
{
str = String(window.location);
var vars = new Array();
var cont = true;
var name;
var val;
if (str.indexOf("?") > -1)
{
str = str.substring(str.indexOf("?") + 1);
if (str.indexOf("#") > -1)
{
str = str.substring(0, str.indexOf("#"));
}
do
{
name = str.substring(0, str.indexOf("="));
if (name !== "")
{
if (str.indexOf("&") > -1)
{
val = str.substr(str.indexOf("=") + 1, str.indexOf("&") - str.indexOf("=") - 1);
str = str.substr(str.indexOf("&") + 1);
}
else
{
val = str.substr(str.indexOf("=") + 1);
cont = false;
}
vars[name] = val.replace(/[+]/g, " ");
}
else
{
cont = false;
}
} while (cont);
}
return vars;
}