【发布时间】:2017-12-24 22:08:08
【问题描述】:
我的 HTML 代码:
<form class="addtowatchlistform" action="logo/insertwatchlist.php" method="POST">
<input type="hidden" name="tmdb_id" value="'.$result[$x]["tmdb_id"].'"/>
<button id="addtowatchlistbutton" type="submit" name="tmdb_id" value="'.$result[$x]["tmdb_id"].'" data-tooltip="'.$addremove.' TO YOUR WATCHLIST" class="material-icons" style="color:'.$watchlisticoncolor.'">add_box</button>
</form>
// Same form as above
<form class="addtowatchlistform" action="logo/insertwatchlist.php" method="POST">
<input type="hidden" name="tmdb_id" value="'.$result[$x]["tmdb_id"].'"/>
<button id="addtowatchlistbutton" type="submit" name="tmdb_id" value="'.$result[$x]["tmdb_id"].'" data-tooltip="'.$addremove.' TO YOUR WATCHLIST" class="material-icons" style="color:'.$watchlisticoncolor.'">add_box</button>
</form>
jQuery 代码:
<script>
$(".addtowatchlistform").submit(function(e) {
var data = $(this).serialize();
var url = $(this).attr("action");
$.post(url, data, function() {
try {
data = JSON.parse(data);
$("button#addtowatchlistbutton").data('tooltip', data.addremove + " TO YOUR WATCHLIST");
$("button#addtowatchlistbutton").css('color',data.watchlisticoncolor);
} catch (e) {
console.log("json encoding failed");
return false;
}
});
return false;
});
</script>
insertwatchlist.php代码
<?php
$response = new \stdClass();
$response->addremove = "item1";//you can get the data anyway you want(e.g database)
$response->watchlisticoncolor = "red";
die(json_encode($response));
?>
预期结果:
1.)当有人点击add_box按钮时,它提交表单而不重新加载页面(这个工作正常)
2.) insertwatchlist.php 发送此代码:{"addremove":"item1","watchlisticoncolor":"red"} 并且,Jquery 代码将它们替换为:$addremove 和 $watchlisticoncolor 变量,实时无需重新加载页面。
原始结果:
预期结果的第一点工作正常。
预期结果的第二点什么都不做(没有错误)
【问题讨论】:
-
疑难解答。 F12,javascript 控制台中什么都没有?网络选项卡怎么样,您看到正在发出的网络请求吗?模具似乎没有必要。
console.log(data);在您尝试之前。你得到了什么? -
根据this,我建议不要使用
die()来返回某些东西。我自己没有测试过,但我的第一直觉是尝试return而不是die() -
F12控制台标签没有结果,这里是网络标签prntscr.com/fxntbs的截图
-
单击该请求,然后转到响应选项卡。它有你期望的 JSON 吗? console.log 结果呢?
-
response制表符??控制台选项卡为空
标签: javascript php jquery html ajax