2012-10-17 40 views
0

我有以下jQuery AJAX复制背景图像。我很难理解如何有效地将信息返回到原始页面。这里是AJAX我上“'#dupBtn”的点击发送...从jQuery AJAX调用返回信息并成功执行其他jQuery

//DUPLICATE BACKGROUND  
$('#dupBtn').click(function() { 
    jQuery.ajax({ 
      type: "POST", 
      dataType:'json', 
      url: "../system/bgUpdate.php", 
      data: { 
       "user":<?= $_POST['user'] ?>, 
       "bgID":bgID, 
       "refID2":<?= $_POST['refID2'] ?>, 
       "refTable":"<?= $_POST['refTable'] ?>", 
       "bgTitle":($('#bgTitle').val()), 
       "path":path, 
       "bgColor":bgColor, 
       "bgPoz":bgPoz, 
       "bgRepeat":bgRepeat, 
       "attach":attach 
       } 
     }); 
}); 

这里是PHP页面bgUpdate.php的基本MySQL查询。

mysql_query("INSERT INTO backgrounds (user,title,path,bgColor,bgPosition,bgRepeat,bgAttachment) VALUES ('".$_POST['user']."','$title','".$_POST['path']."','$bgColor','".$_POST['bgPoz']."','$rt','$attach')"); 

$bgIDnew = mysql_insert_id(); 

我想要做的是在MySQL的条目的成功执行下面的代码原有页面上发射,从MySQL PHP页面动态捕捉“$ bgIDnew”。

$('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>'); 

回答

1

你可以用的success属性来完成这个功能:

$('#dupBtn').click(function() { 
    jQuery.ajax({ 
     type: "POST", 
     dataType:'json', 
     url: "../system/bgUpdate.php", 
     data: { 
      ... 
      }, 
     success: 
      function(response) 
      { 
       $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>'); 
      } 
    }); 
}); 

这只是其中的一部分,但...另一半是你的PHP需要返回的东西,jQuery的可以理解为一个“成功”的呼叫。我的首选是使用HTTP状态码。在你的情况下,你的PHP脚本应该返回一个200的代码,如果它成功的话;否则,它应返回400范围内的内容。 (顺便说一句,如果你想让jQuery做一些单独的错误,你可以使用.ajax()error属性。)

但是,如果你需要从服务器返回数据到客户端脚本,那么你的PHP可以打印出如下信息:

mysql_query("INSERT INTO backgrounds (user,title,path,bgColor,bgPosition,bgRepeat,bgAttachment) VALUES ('".$_POST['user']."','$title','".$_POST['path']."','$bgColor','".$_POST['bgPoz']."','$rt','$attach')"); 

$bgIDnew = mysql_insert_id(); 
// Best practice to keep it in some sort of understandable format 
// Here, we'll put it in an associative array: 
$response = array('id' => $bgIDnew); 
print_r(json_encode($response)); 

这个PHP脚本返回ajax()方法的$ response变量的JSON表示。你已经配置了AJAX()方法来读取响应的dataType为JSON,所以它已经知道如何读response参数......这意味着你的成功,函数可以是这个样子:

success: 
    function(response) 
    { 
     $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=' + response.id); 
    } 
+0

感谢的信息 - 但我怎么得到的PHP变量,“$ bgIDnew”回到AJAX页面使用它在成功的jQuery? – Chris

+0

最好的办法是使用PHP的函数'json_encode($ bglDnew)'并将结果回显出来。然后在你的'success'函数中,你可以访问'response'变量,它是PHP页面的输出。由于您已经指出dataType是'json',因此您可以将该'response'变量作为JSON对象读取。 –

+0

再次感谢 - 你能在你的答案中证明这一点吗? – Chris

1

jQuery.ajax()success属性,作为一个回调,您可以使用。另一个是complete,如果请求成功或不成功,则被触发。

jQuery.ajax({ 
    /* your stuff here */ 
    success: function(response) { 
    $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>'); 
    } 
}); 
1

您可以在成功回调函数的Ajax请求的写上去的逻辑..

这时候成功返回一个Ajax请求被解雇..

success: function(response) { 
    $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>'); 
    } 

添加这对你的ajax请求...