我有一个输出此html的view_mine_and_others.php
文件
<div class="rec" id="1">
<div class="val">343</div>
<a class="change">Change</a>
</div>
<div class="rec" id="2">
<div class="val">12001</div>
<a class="change">Change</a>
</div>
<div class="rec" id="3">
<div class="val">4233</div>
<a class="change">Change</a>
</div>
我将链接(<a class="change">
)绑定到js函数function change()
,该函数读取所涉及记录的id and val
,并注意将此数据发送到{{1}脚本。
update.php
$("a.change").click(change);
function change(){
var id = $(this).parent().attr('id');
var val = $(this).siblings('.val').html();
/* this I'm guessing is where I call the ajax code */
/* I then have some code here to udpate the interface if successful *
}
将检查用户是否有权进行此更改,如果是,则会进行更改。它还将update.php
设置为成功指标。这个$success = 0 or 1
不会以任何方式返回,因为它不是函数,它只是我在更新脚本中可以在需要时使用的内部变量。
$success
)($success=1 in update.php
)的反馈。我将使用该反馈以不同方式更新界面。额外信息:
请注意,我选择不使用表单:)只使用success = 0 in update.php
update.php脚本需要<a>
和$_POST['id']
(我不会在这里发布update.php的代码,因为它不是重点,我敢肯定你可以想象它的样子和它的作用)
答案 0 :(得分:2)
与Karim79类似的情况
我这样做:
<强>的Javascript 强>
function change(){
var id = $(this).parent().attr('id');
var val = $(this).siblings('.val').html();
$.ajax({
url: 'view_mine_and_others.php',
dataType:"json",
type: 'POST',
data: 'id=' + id + '&val=' + val,
success: function(resp) {
if($.isFunction(resp.successFunction)) {
successFunction.apply();
} else if($.isFunction(resp.failureFunction)){
failureFunction.apply();
}
}
});
}
<强> PHP 强>
$id=$_POST["id"];
$val=$_POST["val"];
//Do something with these variables
if($success==1){
echo '{successFunction:function(){
updateSuccessful();
}}';
}else{
echo '{successFunction:function(){
updateFailed();
}}';
}
然后再次使用javascript
function updateSuccessful(){
//do something because the server returned a success
}
function updateFailed(){
//do something else because the server returned a failure
}
当然,你在javascript中不需要额外的“updateSuccessful”和“updateFailed”函数, 因为,您可以封装这些函数在从PHP返回的函数中执行的任何操作
所以不要在PHP中这样做
echo '{successFunction:function(){
updateSuccessful();
}}';
你可以做到
echo '{successFunction:function(){
//do something because the operation was successful
}}';
PHP代码中的一种javascript代码....
答案 1 :(得分:2)
以下是快速破解,因为上述解决方案似乎错过了几个步骤,并且此代码处理清理您的$ _POST数据并且可能稍微容易理解:
<强> JAVASCRIPT:强>
function change() {
var id = $(this).parent().attr('id');
var val = $(this).siblings('.val').html();
$.post('/view_mine_and_others.php', { id: id, val: val }, function(data) {
if (data == '1') {
alert('success');
} else {
alert('error');
}
});
// you MUST return false or the A button will still fire the click event
return false;
}
<强> PHP:强>
// assumes both id and val are integer values (sanitizes data)
$id = (isset($_POST["id"])) ? (int) $_POST['id'] : null;
$val = (isset($_POST['val'])) ? (int) $_POST['val'] : null;
// do your database work here
// and assume that you create a variable
// called $success which is either true or false
// depending on if the update was successful
// echo the response to be picked up by the AJAX request
echo ($success) ? 1 : 0;
die;
答案 2 :(得分:0)
将该成功变量的值作为Ajax脚本的输出发出,并检查Ajax回调中的值。