Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将服务器端生成的新页面加载到PhoneGap或Cordova应用程序中?_Javascript_Laravel_Cordova_Laravel 5_Phonegap - Fatal编程技术网

Javascript 如何将服务器端生成的新页面加载到PhoneGap或Cordova应用程序中?

Javascript 如何将服务器端生成的新页面加载到PhoneGap或Cordova应用程序中?,javascript,laravel,cordova,laravel-5,phonegap,Javascript,Laravel,Cordova,Laravel 5,Phonegap,我正试图找出最简单、最快捷的技术,使我们公司的网站适应可以从应用商店下载的应用程序。PhoneGap/Cordova看起来很有前途。使用InAppBrowser插件看起来是一条显而易见的途径,但我们需要通过Cordova插件访问一些手机API,并且似乎无法在InAppBrowser(Webview?)窗口中访问这些API中的数据 作为替代方案,我想知道为什么我不能直接用从服务器加载的新HTML页面内容替换PhoneGap页面(实际上是一个单页面应用程序)中的HTML内容?我们在服务器端使用Lar

我正试图找出最简单、最快捷的技术,使我们公司的网站适应可以从应用商店下载的应用程序。PhoneGap/Cordova看起来很有前途。使用InAppBrowser插件看起来是一条显而易见的途径,但我们需要通过Cordova插件访问一些手机API,并且似乎无法在InAppBrowser(Webview?)窗口中访问这些API中的数据

作为替代方案,我想知道为什么我不能直接用从服务器加载的新HTML页面内容替换PhoneGap页面(实际上是一个单页面应用程序)中的HTML内容?我们在服务器端使用Laravel模板,因此已经有了一个页面包装器,Laravel在发送到客户端之前将页面特定的内容(在服务器上)注入其中。我可以将页面包装器HTML移动到前端(进入我的PhoneGap应用程序中编译的SPA),完成所有页面所需的所有JS和CSS,然后将新页面内容实时加载到DOM中(例如页面主体中),任何JS都可以通过Cordova插件访问电话API

这是可行的,还是我遗漏了什么?(有什么问题吗?)


谢谢。

你可以用这样的东西

在您的服务器中创建如下主页:

<?php
header('Access-Control-Allow-Origin: *');
header("content-type: text/javascript");

          if(isset($_POST['home']))
           {
            $content_html = '<head><title> Test </title></head><body><span>working</span></body><script>declare  all necessary script hear</script>';
                  echo json_encode($content_html);  
            }
?>

在cordova index.html中

<html id="new_content">


</html>
 <script type="text/javascript" src="cordova.js"></script>
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
       $('#new_content').html("<center><span>Loading ...</span></center>");
                  $.ajax({
                         type: "POST",
                         url: "http:/your_serveur/home.php",
                         data: {"home":"home"},
                         cache: false,
                         async:false,
                         success: function(data){   
                           var data = JSON.parse(data); 
                            $("#new_content").html(data);
                              },
                        });
</script>

$(“#新内容”).html(“加载…”);
$.ajax({
类型:“POST”,
url:“http://your_serveur/home.php”,
数据:{“主页”:“主页”},
cache:false,
async:false,
成功:函数(数据){
var data=JSON.parse(数据);
$(“#新内容”).html(数据);
},
});

谢谢。我想它必须以JSON编码的方式发送?这是唯一的格式吗?好吧,如果是的话,我只是想确定一下。是访问控制头,因为响应是JSON格式的?另外,PHP端定义的Javascript(“在这里声明所有必要的脚本”)是否可以移动到cordovaindex.html中的标记中?谢谢,它是通过JSON编码发送的。它快速且安全,访问控制允许源代码。如果您从http serveur发送请求,是的,您可以在cordovaindex.html中声明所有脚本,而不是在PHP端。我在我的应用程序中使用了类似的示例,它的工作非常完美,
u欢迎
非常感谢。我想这在HTTPS上有效?还有,饼干怎么样?它们会起作用吗?我不想让我的用户在每次新页面查看时都注销:)谢谢使用HTTPS和HTTP,是的,你可以在javascript中使用cookies,在没有登录的情况下调用所有页面,uwelcome