日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

ajax请求php返回的数据是整个页面的html,Ajax出错并返回整个页面html的问题

發布時間:2024/2/28 php 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ajax请求php返回的数据是整个页面的html,Ajax出错并返回整个页面html的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有這樣一個例子在thinkPHP視圖頁面執行一個給評論點贊的功能,為了強化用戶體驗,一般都采用ajax異步請求后臺處理點贊數據,成功后頁面執行局部更新后的數據即可。前臺通常會用到jquery,通過執行jquery的ajax方法更加簡單方便的完成任務請求。

簡單描述下問題出現場景

tinkPHP在應用路由后的視圖頁面執行ajax,并沒有正常放回數據。以下代碼描述了一個獲取評論ID,到ajax請求的過程。根據后臺處理規則,cmthot方法會返回一個更新的后點贊數據(data)返回到前臺。function?uphot(o){

var?cmtid=$(o).attr("cmtid");//獲取評論ID

$.ajax({

type:"post",

dataType:"json",

data:{cmtid:cmtid},

url:"{:url('cmthot')}",//請求地址

success:function(data){

$('#hot'+cmtid).html('?'+data);

},

});

}

這是就會出現這種情況,后面沒有正常返回點贊數據,報錯了。通過alert(data)可以看到這樣的情景。

再來看下后臺處理的部分public?function?updatehot()

{

if(request()->isAjax()){

$cmtid=input('cmtid');

$cmthot=model('comment')->cmthot($cmtid);

return?$cmthot;

}else{

$this->error('非法請求');

}

}

在上述代碼中通過控制器將ajax獲取的評論ID丟到模型(模型代碼就不貼了)去處理后拿到的新增后的點贊數返回給前臺。前臺(前述代碼)通過.html重寫了新的數據。

發現問題的根源出自路由

為了排錯,當時就把ajax改成了a鏈接直接提交。返回的結果一切正常,也就是說后臺控制器和模型均正常,沒有錯誤。問題應該還是在ajax上。

因為這個操作方式我在網站后臺經常使用,按說也沒有錯誤,再次到后臺相同功能處比對。后臺類似功能一切正常。

為了找出問題出現的原因,就比較了下網站前后臺的差異。唯一明顯的就是前臺為了用戶體驗動用了路由,精簡了url。而后臺使用iframe框架,url固定是框架頁面的地址,所以當時就沒有使用路由。

找到不同點再來差錯就方便了,第一段代碼中請求的地址,因為被路由了,所以并不存在,這里需要補上路由后的地址,所以在補上斜杠即可。url:"{:url('/cmthot')}",

最終就因為一條斜杠造成返回一頁的html,所以還是要仔細。

總結

以上是生活随笔為你收集整理的ajax请求php返回的数据是整个页面的html,Ajax出错并返回整个页面html的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。