0

编辑:现在可以使用,代码已更新。非常感谢马丁安普斯!

所以我已经玩了一个星期了,已经破解了很多例子,但它没有奏效,所以我不会费心发布代码,因为它是一团糟!我是一个万事通,一无是处,所以我不知道我哪里错了。

这就是我需要的。


后测.php

<html>
<head>
<script type="text/javascript" src="./js/jquery-1.7.2.min.js"></script>
</head>
<body>

<form name="processForm" id="processForm" action="process.php" method="POST">
  <input type="text" id="textField" name="textField" />
  <input type="hidden" id="sessionID" name="sessionID" value="myusername" />
<input type="submit" value="Process!" />
</form>

<div id="mydiv"></div>

FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>
FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>

<script type="text/javascript">

$('#processForm').submit(function() {
  var text = $('#textField').val();
  var sid  = $('#sessionID').val();

$.ajax({
  url: "process.php",
  type: "POST",
  data: { 'text' : text, 'sessionID' : sid },
  success: function(data) {
    var result = $.parseJSON(data);
    if (result.success) {           
        // Handle your result and update your form accordingly  
        // result.data.someKey  
        $('#mydiv').text('Success! With ' + result.data);

    }
    else {
        // Error handling as applicable
    }
  }
});

    return false;
});

</script>

</body>
</html>

进程.php

<?php
$someText=$_POST['text'];

$return = array('success' => false, 
            'data' => $someText
           );

if (isset($_POST['text'], $_POST['sessionID'])) {
    // Do your queries

    $return['success'] = true;
    //$return['data'] = array('someKey' => 'someValue');
    $return['data'] = $someText;
}

echo json_encode($return);
?>

我已经尝试了很多示例,并尝试从头开始制作自己的示例,但似乎无法使其正常工作!当您在 facebook 上添加评论或新帖子时,我正在尝试完成的一个示例。

我希望有人能帮忙,因为我觉得我已经在这个简单的任务上浪费了一周的时间。

提前致谢!

4

4 回答 4

4

您不需要将会话变量存储在页面中,因为它已经存储在 cookie 中。假设您使用的是 JQuery,这里有一个快速示例:

标记

<form id="processForm" action="process.php" method="POST">
   <input type="text" id="textField" name="textField" />
   <input type="hidden" id="sessionID" name="sessionID" value="<?=session_id()?>" />
   <input type="submit" value="Process!" />
</form>

Javascript

$('#processForm').submit(function() {
  var text = $('#textField').val();
  var sid  = $('#sessionID').val();

  $.ajax({
    url: "process.php",
    type: "POST",
    data: { 'text' : text, 'sessionID' : sid },
    success: function(data) {
        var result = $.parseJSON(data);
        if (result.success) {           
            // Handle your result and update your form accordingly  
            // result.data.someKey  
        }
        else {
            // Error handling as applicable
        }
    }
   });

   return false;
});

进程.php

<?php

$return = array('success' => false, 
                'data' => array()
               );

if (isset($_POST['text'], $_POST['sessionID'])) {
    // Do your queries

    $return['success'] = true;
    $return['data'] = array('someKey' => 'someValue');
}

echo json_encode($return);
?>

笔记

您应该使用绝对 url 并注意表单/javascript 是不突兀的,因此您也应该让它在没有 ajax 的情况下运行。

于 2012-07-14T23:50:37.847 回答
0

您可以为此使用一般的 AJAX 请求,然后在响应时更改 div 吗?

这当然是使用 JQuery。

$.ajax({
                    type: "POST",
                    url: "/process.php",    
                    data: "yourData=AwesomeData&SomeOtherData=5",
                    success: function(data){
                        //Update the div
                    },
                    error: function(request){
                        //Something went wrong.
                    },
                });
于 2012-07-14T23:42:43.587 回答
0

我假设您只想通过 ajax 从 process.php 加载一些数据。您可以使用load()jquery 中的方法。http://api.jquery.com/load/

在您的index.php文件中:

$('#container').load('process.php', {'variable1' : var1, 'variable2' : var2}); 

上面的代码用于使用POST请求通过 ajax 提交数据。因此,您必须在process.php文件中使用$_POST['variable1']然后执行您的查询来访问它们,我假设您已经如何做到这一点,所以我不提供示例。如果它是多行结果,则需要将结果存储在数组中:

$store = array();
foreach($result as $row){
  $store[] = array('field1'=>$row['field_name']);
}

最后用于json_encode使数组更易于在 javascript 中处理:

echo json_encode($store);

如果您需要更多帮助,请随时发表评论。

于 2012-07-14T23:55:09.867 回答
0

以下是收集用户数据的 Web 表单示例:

<form class="form">
<input class="name" type="text"/>
<input class="email" type="text"/>

<button class="submit">Send Data</button>
</form>

这是jQuery:

$('form button.submit').click(function() {
    $.ajax({
        'data' : $('form').serialize(),
        'type' : 'POST',
        'url' : 'process.php',
        'success' : function(data) {
            $('div.container').html('<p>' + data + '</p>');
        }
    });
});

这是PHP:

<?php
    if (isset($_POST['name']) && isset($_POST['email']) && $_POST['name'] != "" && $_POST['email'] != "") {
    //Do some SQL processing

        echo "success";
        exit;
    }

?>

希望有帮助!

于 2012-07-15T00:12:59.293 回答