将带有 php 和 javascript 变量的 php 文件包含在 ajax 文件中


Including php file with php and javascript variables into ajax file

我有一个包含语言文件"lang.php","index.php"和ajax调用文件"ajax.php"的应用程序。Lang文件包含php和javascript变量,我包含在"index.php"和"ajax.php"中,所以我可以通过翻译"lang.php"文件来更改语言。

问题是,当我在"ajax.php"中包含"lang.php"时,因为它在<script></script>标签中包含javascript变量,并且ajax将其解释为输出。当我删除<script>标签并且"lang.php"仅包含php变量时,它可以正常工作。这是我的文件内容。如何在不删除 javascript 变量的情况下执行此操作(因为我每种语言需要一个语言文件)。

索引.php

include "lang.php";
function test()
{   
$.ajax({
    url: 'ajax.php',
    type: 'POST',
    success: function(data) {
        //manipulating returned json;   
    },
    error: function() {
        alert(errorMessage);
    }
});
};
<input type="button" onclick="test();">

郎.php

<script>
   var errorMessage = "Error during ajax call";
</script>
<?php
   $var1 = "Welcome";
   $var2 = "Header";
?>

阿贾克斯.php

include "lang.php";
$array = array($var1, $var2);
echo json_encode($array);
die();

谢谢你的帮助。

这种方法有很多

错误,我真的不知道从哪里开始:)但这里有一个可能的解决方案:

在 ajax 中.php在 lang 之前设置一个变量.php像这样包含 "$isAjax = true;",然后在 lang 中.php使整个"脚本"部分与该变量一致

<?if(!$isAjax){?>
 <script>....</script>
<?}?>

就是这样!当你调用 ajax 时,你不再需要 javascript lang 变量.php因为它们已经在 index.php 中加载了。

或:

用所有 lang 依赖数据创建一个"lang.php",以及你在 JS 中使用的数据。然后将它们包含在所有页面中,并在主页(不是 ajax)上包含一个其他文件,假设"langJS.php",内容如下:

<script>
var errorMessage = <?=$lang['JSerrorMessage']?>;
var thankyouMessage = <?=$lang['JSthankyouMessage']?>;
...
</script>

你可以在 ajax 调用中强制使用数据类型,以便要求 jQuery 将你的 ajax 结果视为 HTML(使用脚本进行评估)。您必须使用dataType设置。

$.ajax({
    url: 'ajax.php',
    dataType: 'html',
    type: 'POST',
    success: function(data) {
        alert(data);    
    },
    error: function() {
        alert(errorMessage);
    }
});

更多详情请见 http://api.jquery.com/jQuery.ajax/

问题是你混合了很多东西,你失去了图片。错误是您在 php 中的 json_encode 函数之前输出文本。这意味着 jquery ajax 函数无法智能猜测答案的内容类型是纯文本或格式错误的 json。

另一个错误是,如果您没有从 Web 服务器返回与 status : 200OK 不同的内容,则不会调用 jquery ajax 中的 error: function() { }

你对页面上显示的javascript文本和php变量都使用lang.php,这可能很好,或者至少这本身不是错误。

您的问题有多种解决方案,一种是@minychillo回答的解决方案一个更干净的解决方案是将js消息和php(用于动态页面)消息的文件分开。

我会做一个朗.js

var errorMessage = 'message1';
var thankyouMessage = 'message2';

我会包含在页面中

<script src="lang.js" />

我会让 php 文件没有脚本部分。