我正在研究使用CakePHP作为后端而JQuery作为前端的Web应用程序。为了与服务器通信,我已经创建了表单和jquery ajax和浏览器,向网络中的url显示ajax发送的请求值。这就是我现在所拥有的:
问题
I want to display ajax post value into add.ctp which is not showing
Page 1 Ajax工作的地方
<script type="text/x-javascript">
$(".hover-star").click(function () {
$("#hover-test").css("color", "#ff6a00");
var id= $('input[name=starrating]:checked').attr('id');
$.ajax({
type: "POST",
url: '<?php echo Router::url(array('controller'=>'Reviews','action'=>'add'));?>',
cache: false,
data: "id="+id,
dataType: 'HTML',
success: function(result) {
window.open('/app/webroot/reviews/add/'+id,'_self');
},
error: function (response, desc, exception) {
// custom error
}
});
});
</script>
<form method="post">
<input class="hover-star" type="radio" name="starrating" id="1" value="1" title=""/>
<input class="hover-star" type="radio" name="starrating" id="2" value="3" title=""/>
<input class="hover-star" type="radio" name="starrating" id="3" value="3" title=""/>
</form>
我希望在哪里显示ajax请求值Add.ctp
<?php echo $this->ratingPost;?>
评估控制器添加功能
function add()
{
$this->ratingPost= $data = $this->data;
}
答案 0 :(得分:1)
看起来可能会出现一些问题。首先,您需要了解AJAX将把它的数据发送到指定的URL并等待来自服务器的响应。响应将包含在&#34;结果中。&#34;
在这个例子中,它看起来像是要发布到/ reviews / add。执行此操作时,add方法将接收post数据并尝试呈现add.ctp视图文件。整个渲染是返回到您的AJAX成功的结果。&#34;在您的添加方法中,您没有为视图设置任何内容,并且您没有返回任何值,因此您的&#34;结果&#34;是空的。
在您的AJAX成功中,您尝试打开一个新窗口,再次调用add方法,并且您尝试包含参数&#34; id&#34;哪个不会对返回的结果做任何事情,只尝试使用给定的参数再次运行该方法,但是你的方法无论如何都不会要求任何参数......
如果你想用点击的id值打开一个新窗口,为什么甚至使用AJAX,只需将id作为参数发送到你的add方法。一般来说,我认为AJAX用于动态更新当前加载页面上的内容。我将在您的代码中突出显示我正在讨论的内容。
您的脚本
<script type="text/x-javascript">
$(".hover-star").click(function () {
$("#hover-test").css("color", "#ff6a00");
var id= $('input[name=starrating]:checked').attr('id');
window.open('/app/webroot/reviews/add/'+id, '_self');
}
</script>
您的添加方法
public function add($myID=null){
$this->set('myID', $myID);
}
如果你致力于AJAX,你可以通过创建一个新方法来处理返回的AJAX的渲染,这样做。我只是不明白这一点。您还必须将从AJAX方法返回的内容限制为URL安全编码。
AJAX方式
$.ajax({
type: "POST",
url: '<?php echo Router::url(array('controller'=>'Reviews','action'=>'add'));?>',
cache: false,
data: "id="+id,
dataType: 'HTML',
success: function(result) {
window.open('** path to new method for rendering view **'+result, '_self');
},
error: function (response, desc, exception) {
// custom error
}
});
答案 1 :(得分:0)
在ajax工作的页面上
<div id="show"></div>
ajax的成功就像
success: function (result) {
$("#show").html(result);
$("#show").show();
}