3

我对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

4 回答 4

2

我注意到您正在序列化 ID 为 #Book 的表单,但您的 html 未显示 ID 为 #book ...另外,您需要在 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);
        }
    });
});
于 2012-11-25T01:27:06.357 回答
2

data需要成为具有 value 现有键的对象l

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

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

或者,在您的 PHP 代码中

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

于 2012-11-25T01:34:46.857 回答
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();

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

于 2012-11-25T05:39:46.590 回答
0

这个问题已经解决

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

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

向所有编码员致以最诚挚的问候

于 2012-11-26T15:25:25.193 回答