Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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
如何将php包含调用作为javascript函数的变量传递?_Javascript_Php - Fatal编程技术网

如何将php包含调用作为javascript函数的变量传递?

如何将php包含调用作为javascript函数的变量传递?,javascript,php,Javascript,Php,我有一个页面,它使用javascript innerhtml将元素的内容替换为伪静态页面 以下代码来自该元素的当前内容: <?php $con = mysql_connect('***********', '******', '**********'); mysql_select_db(dbbmdmi); if ($con) { $sql = "SELECT TeamID, Captain, CountryID, ArrDate, DepDate FROM Teams";

我有一个页面,它使用javascript innerhtml将元素的内容替换为伪静态页面

以下代码来自该元素的当前内容:

<?php
$con = mysql_connect('***********', '******', '**********');
mysql_select_db(dbbmdmi);

if ($con) {
    $sql = "SELECT TeamID, Captain, CountryID, ArrDate, DepDate FROM Teams";
    $result = mysql_query($sql) or die(mysql_error());

    $link = "<a id='" . $row["TeamID"] . "' onClick='SetTeamID();ReplaceContentInContainer('content','replace_target6')'>Edit</a>";

    if ($result) {
        // output data of each row
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
            echo "Captain: " . $row["Captain"]. "<a id='" . $row["TeamID"] . "' onClick=\"ReplaceContentInContainer2('content','<?php include 'scripts/editteam.php?TeamID=" . $row["TeamID"] . "'>')\">Edit</a>;" . "</br>Country: " . $row["CountryID"]. "</br>Dates: " . $row["ArrDate"]. " - ". $row["DepDate"]. "<br>";
        }
?>

这是一个非常有趣的想法。您将遇到的问题是,PHP只会呈现一个字符串
,因为PHP最初只处理它,然后将它交给其他人。这可能是你想要做的

<!-- front-end.html-->
<script type="text/javascript">
function ReplaceContentInContainer2(target,source) {
    document.getElementById(target).innerHTML = source;
}
function ajaxForHtml(url, callback) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      callback(xhttp.responseText); 
    }
  };
  xhttp.open("GET", "ajax_info.txt", true);
  xhttp.send();
}
function clickAction(id) {
  ajaxForHtml('scripts/editteam.php?TeamID=' + id, function(data) {
    ReplaceContentInContainer2('content', data);
  });
}
</script>
<?php
$con = mysql_connect('***********', '******', '**********');
mysql_select_db(dbbmdmi);

if ($con) {
    $sql = "SELECT TeamID, Captain, CountryID, ArrDate, DepDate FROM Teams";
    $result = mysql_query($sql) or die(mysql_error());

    $link = "<a id='" . $row["TeamID"] . "' onClick='SetTeamID();ReplaceContentInContainer('content','replace_target6')'>Edit</a>";

    if ($result) {
        // output data of each row
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
          echo sprintf('Captain: %s <a id="%d" onclick="clickAction(%d);">Edit</a>;</br>Country: %d</br>Dates: %s - %s </br>',
                        $row['Captain'], $row['TeamId'], $row['TeamId'], $row["CountryID"], $row["ArrDate"], $row["DepDate"]
               );
         }

函数ReplaceContentInContainer2(目标、源){
document.getElementById(target.innerHTML=source;
}
函数ajaxForHtml(url,回调){
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState==4&&xhttp.status==200){
回调(xhttp.responseText);
}
};
open(“GET”,“ajax\u info.txt”,true);
xhttp.send();
}
功能点击操作(id){
ajaxForHtml('scripts/editteam.php?TeamID='+id,函数(数据){
替换内容容器2(“内容”,数据);
});
}

它不会那样工作的!您希望从
scripts/editteam.php
返回什么内容?使用AJAX:php在服务器端进行评估,因此JS永远无法访问团队ID值。include的目标是什么?您可以使用AJAX调用并动态检索team id.RamRaider-该文件将是替换当前内容的元素的新内容。这样做的目的是能够传递变量以调用新内容。类似问题的答案是:Terry-javascript不必访问团队ID值,因为PHP在标记的当前文档中将其呈现为文本。在php检索到团队ID值之前,javascript不应该启动。include调用php文件scripts/editteam.php文件来替换当前元素的内容。我同意AJAX可能是更明智的方法,但这应该是可行的。我要感谢你,不幸的是,我没有AJAX的经验(我知道,我知道,我的列表中仅次于mysqli)。我是在我的程序中调用其中一个函数而不是调用javascript吗?Onclick是javascript。。。我将把另一部分加进去。我被叫走了。我想我们可能遇到了问题。在早些时候的评论中,有人说了一些让我思考的话。这不是url链接,而是通过php包含的文件路径。页面从不刷新,只刷新元素的内容,所以这不意味着我们不能像url一样传递变量吗?您可以访问变量。您可以将其交给JavaScript,以便进行URL调用。也许这是一个很大的一次检查。有很多很好的资源,最后,如果你看到自己在做很多前端开发,有很多好方法,花点时间来消化上面的内容。我希望这会有帮助。这实际上是针对您的问题的端到端解决方案。这类问题在堆栈溢出时会被问到很多,所以只需随便看看就可以了。我今晚得走了。祝你好运
<!-- front-end.html-->
<script type="text/javascript">
function ReplaceContentInContainer2(target,source) {
    document.getElementById(target).innerHTML = source;
}
function ajaxForHtml(url, callback) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
      callback(xhttp.responseText); 
    }
  };
  xhttp.open("GET", "ajax_info.txt", true);
  xhttp.send();
}
function clickAction(id) {
  ajaxForHtml('scripts/editteam.php?TeamID=' + id, function(data) {
    ReplaceContentInContainer2('content', data);
  });
}
</script>
<?php
$con = mysql_connect('***********', '******', '**********');
mysql_select_db(dbbmdmi);

if ($con) {
    $sql = "SELECT TeamID, Captain, CountryID, ArrDate, DepDate FROM Teams";
    $result = mysql_query($sql) or die(mysql_error());

    $link = "<a id='" . $row["TeamID"] . "' onClick='SetTeamID();ReplaceContentInContainer('content','replace_target6')'>Edit</a>";

    if ($result) {
        // output data of each row
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
          echo sprintf('Captain: %s <a id="%d" onclick="clickAction(%d);">Edit</a>;</br>Country: %d</br>Dates: %s - %s </br>',
                        $row['Captain'], $row['TeamId'], $row['TeamId'], $row["CountryID"], $row["ArrDate"], $row["DepDate"]
               );
         }