我是学习jquery.ajax的新手。我想将一些数据从a.php粘贴到b.php。 这是我的代码:
a.php只会
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script language="javascript">
$(document).ready(function () {
var params = "value=" + $('#send').text();
$.ajax({
url:'b.php',
type:'post',
dataType:'html',
data:params,
success:function(data){ $("#result").html($(data).html('#aa')); }
});
});
</script>
<body>
<div id="result"></div>//sometimes the return data is empty, so this part just return: <div="aa"></div>
<div id="send">apple</div>
b.php
<?php
echo '<div id="aa">';
//'.$_REQUEST['value'].' will put in some process here, but sometimes the return data is empty.
echo '</div>';
?>
如果<div id="aa"></div>
为空,我如何以及在何处添加判断,在其间添加sorry, there is no result
所以在a.php
中,信息会显示:<div id="result"><div id="aa">sorry, there is no result</div></div>
感谢。
答案 0 :(得分:7)
首先,您应该始终返回数据/信息,而不是HTML标签或代码......您在HTML部分中执行此操作。
<?php
//send ONLY the data, best to send in JSON syntax
?>
然后你使用
$.ajax({
url:'b.php',
type:'post',
dataType:'html',
data:params,
success: function(data) {
if(data.length == 0)
$("#result").html("<span class='no-data'>No Data</span>");
else
{
// Loop through the data and add it as, for example an <li> in a <ul>
}
}
});
答案 1 :(得分:0)
将您的AJAX调用更改为:
$(document).ready(function () {
var params = "value=" + $('#send').text();
$.ajax({
url:'b.php',
type:'post',
dataType:'html',
data:params,
success:function(data){
$("#result").html($(data).html('#aa'));
if ( $("#aa").html() == "" ) {
$("#aa").html("sorry, there is no result");
}
}
});
});
答案 2 :(得分:0)
您的代码:
$("#result").html($(data).html('#aa'));
不正确。它会将data
中包含的元素的内容设置为#aa
。
我想你想要:
function(data){
var $data = $(data);
$data.html(function(i, html) {
if(html === '') {
return "sorry, there is no result";
}
return html;
);
$("#result").empty().append($data);
}
但仅仅返回结果文本而不是返回HTML会不会更容易?
所以在PHP中:
<?php
echo getResultOfYourProcess();
?>
并在客户端:
$.ajax({
url:'b.php',
type:'post',
dataType:'text',
data:params,
success:function(data){
data = data === '' ? "sorry, there is no result" : data;
$("#result").html(data);
// or $("#result").text(data);
}
});