2016-11-28 70 views
2

这可能是超级基本的,但我花了几个小时后仍未能解决这个问题!简单的PHP代码不能在移动工作

我在Ubuntu 16.1上运行PHP 7。

的PHP文件是完全如下

<?php 

header("Content-type: application/javascript"); 
header("HTTP/1.1 200 OK"); 

ExpandShortLink(); 


function ExpandShortLink() 
{ 

    // get URL 
    $URL_To_Expand = $_REQUEST['url']; 
    // for short links, get the full links 

    // get full URL 
    $arr_URL_Header = get_headers($URL_To_Expand, 1); 
    $strLink  = $arr_URL_Header['Location']; 

//echo $URL_To_Expand; 
    //print_r($arr_URL_Header); 

    if ($strLink) { 
     if (is_array($strLink)) { 
      $Full_URL = array_pop($strLink); 
     } else { 
      $Full_URL = $strLink; 
     } 
    } else { 
     $Full_URL = $URL_To_Expand; 
    } 

    echo $Full_URL; 
} 

- >产生我作为桌面 “URL” 参数中输入URL。但是没有任何移动设备

在一些阅读中,我发现有时PHP会将“//”后面的所有内容解释为注释,这可能是在这里发生的。但是,为什么只发生在移动设备上?此外,和解决这个问题的建议将会很棒!

感谢很多的帮助,

你可以看到这个活here

如果你点击这个桌面上,你会看到的http://例子。 COM。然而,在移动它将返回http:

+3

php是运行服务器端 - 如此移动?无关 – 2016-11-28 20:59:19

+2

第二个代码片段有一个PHP错误;它在定义'$ url'后缺少分号。除此之外,PHP运行在服务器上,而不是客户端,因此客户端是移动设备,平板电脑还是计算机等都无所谓。 –

+0

您确定第二段代码是您的php文件的确切代码吗? – Loko

回答

1

不知道这是否符合回答,但我想在这里为任何其他人可能面临类似的问题的笔记。

我正在使用PHP粘贴上面的ajax调用。我尝试使用text/plain而不是application/json,现在它可以在所有浏览器和所有设备上工作(就我所能测试的情况而言)。

不知道为什么application/javascript在移动Chrome上造成问题,但我认为text/plain是有道理的,因为我只是传回一个文本字符串而不是javascript。

正如我所说,它可能不是完全合格的答案,但希望它可以帮助未来的人!

+0

你的脚本产生字符串'http:// example.com'并假装它是Javascript。浏览器会忽略'//'及其后面的所有内容,直到行结束为止,因为'//引入了[行尾注释](https://developer.mozilla.org/en-US/docs/Learn/ Getting_started_with_the_web/JavaScript_basics#Comments)在Javascript中。您可能不希望文本被浏览器用作Javascript(它不是有效的Javascript);然而,你提供了不好的方向,不要责怪它误会他们。 'Content-Type:text/plain'是这里最好的选择。 PHP无罪。 – axiac

+0

@axiac - 有道理。虽然不确切的是,问题只出现在Chrome浏览器上,而且也只在移动设备上出现。如果方向不正确,我会希望所有的浏览器和所有设备的行为类似..显然移动Chrome浏览器(也只有一些版本)在//之后忽略任何内容... – Roman