请有人帮我解决这个问题。我已经研究了好几天,我不能让包含html代码的php echoed数组格式化为javascript的responseText。 我试图用json_encode($ array)格式化回显数组但是不起作用。 我已经尝试了responseText.split(“”),然后使用for循环来提取数组中的html代码,但我也不能。 我知道javascript代码正常工作,因为我手动插入了这样的html代码: 即
responseText = '<p><img src="img/moon.png">here is your image</p>'
这很完美。但是当php吐出数组时,我在屏幕上看到的所有代码都是数组字。 我知道我的PHP代码也正常工作,因为我在使用POST方法发送文本之前测试了它。
感谢您的帮助。
我的ajax到php
<script>
function ajaxObj( meth, url ) {
var x = new XMLHttpRequest();
x.open( meth, url, true );
x.setRequestHeader("Content-type", "application/x-www-form- urlencoded");
return x;
}
function ajaxReturn(x){
if(x.readyState == 4 && x.status == 200){
return true;
}
}
</script>
<script>
function gotext(){
var mm = document.getElementById("todotext").value;
var isTr=false;
var ajaxfile = ajaxObj("POST", "env.php");
ajaxfile.onreadystatechange = function() {
if(ajaxReturn(ajaxfile) == true) {
document.getElementById("outputimgs").innerHTML = ajaxfile.responseText;
}
}
ajaxfile.send("todotext="+mm);
}
$(document).ready(function(){
$('form[name=uturn]').on('submit', function(e) {
e.preventDefault();
gotext();
$('html, body').animate({
scrollTop: $("#first").offset().top
}, 1000);
return false;
});
});
</script>
<script>
function ajaxObj( meth, url ) {
var x = new XMLHttpRequest();
x.open( meth, url, true );
x.setRequestHeader("Content-type", "application/x-www-form- urlencoded");
return x;
}
function ajaxReturn(x){
if(x.readyState == 4 && x.status == 200){
return true;
}
}
</script>
<script>
function gotext(){
var mm = document.getElementById("todotext").value;
var isTr=false;
var ajaxfile = ajaxObj("POST", "env.php");
ajaxfile.onreadystatechange = function() {
if(ajaxReturn(ajaxfile) == true) {
document.getElementById("outputimgs").innerHTML = ajaxfile.responseText;
}
}
ajaxfile.send("todotext="+mm);
}
$(document).ready(function(){
$('form[name=uturn]').on('submit', function(e) {
e.preventDefault();
gotext();
$('html, body').animate({
scrollTop: $("#first").offset().top
}, 1000);
return false;
});
});
</script>
这是html表单
<form name="uturn" action="process.php" method="post">
<textarea id="todotext" name="text" placeholder="type or paste words here"></textarea><br/>
<input type="submit" id="arefbut" class="button scrolly" value="Convert"/>
</form>
<!-- First -->
<section id="first" class="main">
<div class="container">
<h2>Done !!</h2>
<p id="outputimgs">end</p>
</div>
这是php中html的动态构造
<form name="uturn" action="process.php" method="post">
<textarea id="todotext" name="text" placeholder="type or paste words here"></textarea><br/>
<input type="submit" id="arefbut" class="button scrolly" value="Convert"/>
</form>
<!-- First -->
<section id="first" class="main">
<div class="container">
<h2>Done !!</h2>
<p id="outputimgs">end</p>
</div>
答案 0 :(得分:0)
全部, 我找到了问题所在。就像我说的那样,进入网页的唯一内容是Array;该输出来自str_replace,后来在html代码中间更改为$ commentArray [$ i]以回显到responseText。我不得不添加这个for循环来修复它。我不知道更好的方法。其余的html被忽略了,为了解决这个问题,我添加了html_entity_decode函数。 最终代码如下所示。 现在一切都很完美。
请参阅此处添加的for循环
if(isset($_POST['todotext'])) {
$chunk = $_POST['todotext'];
$text = explode(" ",$chunk);
$delimiter = array(" ",",",".","'","\"","|","\\","/",";",":","?",">","<","~","_","-","=","+","*","!","@","#","$","%","^","&","(",")");
$replace = str_replace($delimiter, $delimiter[0], $text);
for ($i=0; $i<count($replace); $i++)
{
if ($replace[$i]!==' ')
{
$newreplace .= $replace[$i].' ';
}
}
$newreplace = preg_replace('/\s+/', ' ', $newreplace );
$commentArray= explode($delimiter[0], $newreplace);
以下是$ commentArray
的新处理方法for ( $i=0; $i<$counter;$i++)
{
$commentArray[$i]= html_entity_decode('<p class="pos"><img src="imgs/black.png" width="40" height="40"><br>'.$commentArray[$i].'</p>');
}
$together = implode(" ",$commentArray);
echo $together;
}