AJAX POST无法在DIV中加载PHP页面

时间:2012-11-25 01:08:18

标签: php jquery ajax post

我对ajax的耐心消失了。不管怎样都不能搞定这个。说实话,我没有在DIV之外尝试过这个,因为意图是专门使用AJAX加载并将表单发布到所述DIV范围内的页面。

非常感谢你们对即将发生的事情的进步。

#contentmainpane是一个DIV。我有......

if (isset($_POST['l'])) {
echo $_POST['l']; }
else { 
echo 'nope'; }

...在CART页面中加载正常,但没有收到来自BOOK页面的帖子(所以我在#contentmainpane DIV中的CART.PHP上得到了回应)。 以下是令人讨厌的BOOK页面代码:

<form id="form1" method="POST">
<input id="l" name="l" size="45" type="text" value="book">
<input id="submit" name="submit" value="save" type="submit">
</form>


<script>
$('#form1').submit(function(event){

event.preventDefault();

var book = $('#book').serialize();
var cart = '/content/pages/cart.php';
var formdata = {"book": book}


$.ajax({

type: "POST",

url : "/content/pages/cart.php"

data: formdata,

success: function(msg){

$("#contentmainpane").load(cart);

}
});
});
</script>

4 个答案:

答案 0 :(得分:2)

我注意到你正在序列化一个ID为#Book的表单,但你的html没有显示#book的ID ...另外,你需要一个逗号后面的URL

试试这个

$('#form1').submit(function(event) {
    event.preventDefault();
    var book = $('#form').serialize();
    var cart = '/content/pages/cart.php';

    $.ajax({
        type: "POST",
        url: "/content/pages/cart.php",
        data: book,
        success: function() {
            $("#contentmainpane").load(cart);
        }
    });
});

答案 1 :(得分:2)

您的data必须是具有值l的现有密钥的对象。

由于您要求$_POST值为'l',因此必须传递带有键'l'的数据对象。从您的代码中,您在AJAX调用中传递的变量formdata目前是{ 'book' : book}

相反,它必须是{ 'l' : book }

OR,在您的PHP代码中

if(isset($_POST['book'])){...

答案 2 :(得分:1)

您可以使用phery库轻松地通过AJAX将PHP与jQuery联系起来。 http://phery-php-ajax.net

你没有提到#book是什么,我想这是一个表格吗?在这种情况下,在表单中使用data-related将使它能够在一个AJAX调用中加入这两个表单。

在你的情况下,它会像:

<form id="form1" data-remote="function" method="POST" data-related="#book">
  <input id="l" name="l" size="45" type="text" value="book">
  <input id="submit" name="submit" value="save" type="submit">
</form>

在你的PHP中它将是:

function func($data){
  $r = new PheryResponse;
  // $data['l'] got what you want, also $data['submit'] is available here
  // do whatever you need to do, then update your #contentmainpane
  $r->jquery('#contentmainpane')->html('your cart.php contents');
  return $r;
}

Phery::instance()->set(array(
  'function' => 'func'
))->process();

你的逻辑现在将是服务器端,而不再是客户端。通过这种方式,您可以获得更大的灵活性,因为来自服务器的代码是免费的,并且可以在需要时进行更改,而客户端代码则不同。

答案 3 :(得分:0)

问题已解决

谢谢大家的建议和努力。编码论坛上的用户解决了这个ajax帖子问题。

这是线程http://www.codingforums.com/showthread.php?p=1294868#post1294868

最好的问候所有程序员