2016-08-01 153 views
-1

我使用$.post发送形式的数据作为由对象文字的一种process.php阵列如下

$('#form').submit(function(e){ 
     var my_result = JSON.stringify(array);// array is the array where I store my object literals. It contains only object literals 
     alert(my_result); 
     $.post('process.php', my_result, function(answer) { 
      alert('success'); 
     }) 
     .fail(function() { 
      alert('failure'); 
     }); 

    }); 

。数据已发送,但我不知道如何从服务器端访问数据并将其解包以便存储在数据库中。请有人知道如何做到这一点?我读过以前的文章,但他们根本没有帮助我,反而让我更加困惑。

+0

当心,submiting形式引起视形式action属性当前网页的重定向/刷新。这导致ajax请求被中止客户端,并且可能导致服务器不处理请求。首先,如果你想确保你的请求有足够的时间完成,你应该防止这种行为。所以使用'e.preventDefault()'。然后,为了处理POST可变服务器端,网络上已有千千条可用的Tutos。 –

+0

['$ .post'](https://api.jquery.com/jquery.post/)的数据参数不能是JSON字符串,它需要是查询字符串或对象。 – 4castle

+0

我删除了e.preventDefault(),因为同一个按钮必须获取数据并将其存储在数据库中,但是当我使用e.preventDefault()时,php脚本没有执行,所以我不知道还有什么要做。 – princesse

回答

1

,您可以访问数据using the $_POST global:

$server_side_my_result_var = $_POST['my_result']; 
+0

这就是我得到的“注意:未定义的索引:my_result在C:\ wampp \ process.php在第11行” – princesse

+0

你能记录什么$ _POST给你? – Sergeon

+0

另外,A. Wolff在他的关于preventDefault()的评论中是正确的。你确定你是异步调用php脚本并使用POST方法吗?如果您跳过preventDefault()调用,可能是因为您实际上是通过简单的GET请求同步调用您的表单。当你点击提交按钮时,浏览器页面是否重新加载? – Sergeon

相关问题