私はangjsサービスを使用して、残りのAPIリンクをPHPファイルに送信します。問題は、このPHPファイルがjavascriptコードを含む別のPHPファイルを呼び出していることです。サービスでコードを実行すると、PHPファイルが実行されますが、javascriptコードは実行されずに出力されます。それは研究の一日でしたが、解決策は一切ありませんでした。問題がどこにあるのか教えてください。私はrequire 'secondFile.php';
とinclude 'secondFile.php';
を使用していますが、私はjavascriptをローカルで呼び出すように、第2ファイルから第2ファイルの全javascriptコードを取得しようとしましたが、実行せずにコードを出力します。ここ は私のコードです:リモートPHPファイルからjavascriptファイルを呼び出して実行します
angularjsサービス機能:
var link = 'http://path/to/first.php';
$http.post(link, {idf : newDoc.idf})
.success(function (res){
console.log(res);
}).error(function (err) {
console.log(err);
});
<?php
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
$method = $_SERVER['REQUEST_METHOD'];
//$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));
$input = json_decode(file_get_contents('php://input'),true);
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
var_dump($request);
$idf= $request->idf;
$val= $request->val;
switch ($method) {
case 'POST':
insertit($idf, $val);
break;
case 'PUT':
updateit();
break;
case 'REMOVE':
removeit();
break;
}
}
catch(PDOExecption $pe) {
echo "okay";
print "ERROR!".$pe->getMessage();
die();
}
function insertit($idf, $val) {
include 'connect.php';
$dataBilan = array($val);
$stmt = $DB->prepare("INSERT INTO `Test` (val) VALUES (?)");
$stmt->execute($dataBilan);
$last = $DB->lastInsertId();
$idf= $last;
$info_bilan= array(
'val' =>$val
);
$data = array(
'idf'=>$last,
'action'=>'update',
'table'=>'activite',
'data' =>$info_bilan
);
require 'second.php';
echo "okay done inserting";
}
とsecond.phpリモートファイルで最初のPHPファイル、:
<script src="pouchdb-5.3.1.min.js"></script><script type="text/javascript" language="javascript">
var dbRemote = new PouchDB('http://localhost:5984/Mydatabase');
var myDocs;
var value = <?php echo json_encode($data); ?>;
console.log(JSON.stringify(value));
if((value.idf != null) && (value.idf != 0))
{
console.log("-------here we go----");
dbRemote.allDocs({include_docs: true}).then(function (res) {
myDocs = res.rows.map(function (row) {
return row.doc; });
onUpdate(value);
});
}
}
function binarySearch(arr, docId) {
var low = 0, high = arr.length, mid;
while (low < high) {
mid = (low + high) >>> 1; // faster version of Math.floor((low + high)/2)
arr[mid].id < docId ? low = mid + 1 : high = mid
}
return low;
}
function onUpdate(value)
{
console.log("couchdb's "+ myDocs.length);
if(myDocs.length !=0)
{
console.log("haha");
var index = binarySearch(myDocs, value.idf);
var doc = myDocs[index];
if(action== "update")
{
dbRemote.put(doc).then (function() {
console.log("Updated! ");
}).catch(function (err) {
console.log(err);
});
}
}
}
</script>
second.phpファイルの内容は出力されますが、実行されません。私はfirst.phpを実行するとすべてがうまく行きますが、サービスを実行すると印刷されたファイルが表示されます。何かお考えですか?
いくつかのコードサンプルが参考になる。.. –
チェックアウトJSONP http://stackoverflow.com/questions/3839966/can-anyone-explain-what-jsonp-is-in-layman -terms – Mei
編集された記事をご覧ください!私はあなたの問題を理解するのに役立つコードの部分を書いていました。ありがとうございました! – Mana