我搜索过很多帖子,但我找不到任何适合我的答案。现在我将尝试解释我的问题。
我有一个简单的jQuery脚本,可以执行一些ajax请求。它很简单:
print("
<script>
function buscaCaracteristicas(idTotalizador){
var target = '../../ajax/doSomeSearch.php';
$.ajax({
url: target,
//dataType: 'html',
dataType: 'text',
type: 'POST',
success: function(msg){
alert(msg);
}
});
}
</script>
");
PHP页面执行此操作:
<?php
$ret = "<p>hello world</p>";
exit($ret);
?>
我也试过通过$ .html(msg)将返回数据放在HTML元素上。 问题是:警告或回调上的$ .html()永远不会触发,虽然在firebug上我可以检查请求是否有返回代码200 OK。
请注意,函数代码被包装到PHP print(“”)命令中,返回dataType是HTML,这是我真正需要的(不能使用JSON)。
有什么神奇的建议吗?提前谢谢。
已解决:根据Splash-X建议将dataType更改为“text”。
答案 0 :(得分:1)
尝试这种方式:
<?php
$ret = "<p>hello world</p>";
echo $ret;
?>
并查看结果
更新的代码:
<?php
if(isset($_POST['value_s']))
{
$ret = "<p>hello world</p>";
echo $ret;
}
else {
echo "Nothing received !";
}
?>
和javascript:
$.ajax({
url: target,
//dataType: 'html',
data: { "value_s":true}, //or something different value for `value_s`
dataType: 'text',
type: 'POST',
success: function(msg){
alert(msg);
}
});
答案 1 :(得分:0)
你需要你的php页面将$ret
的值返回给你的ajax调用;尝试以下方法:
<?php
$ret = "<p>hello world</p>";
return $ret;
?>
答案 2 :(得分:0)
我们已将问题跟踪到AJAX请求的dataType属性:
print("
<script>
function buscaCaracteristicas(idTotalizador){
var target = '../../ajax/doSomeSearch.php';
$.ajax({
url: target,
dataType: 'html' ,
type: 'POST',
success: function(msg){
alert(msg);
}
});
}
</script>
");
我们的建议是添加错误handeler并更改dataType:
$.ajax({
url: target,
dataType: 'html' ,
type: 'POST',
success: function(msg){
alert(msg);
},
error: function(){
alert('error occured');
}
});
收到错误警报后,我们建议删除dataType属性并让jQuery自动确定它或将其更改为文本。 OP决定将类型指定为文本并且有效:
$.ajax({
url: target,
dataType: 'text',
type: 'POST',
success: function(msg){
alert(msg);
}
});
问题已解决