我试图编写更有条理的主页代码。我必须使用mysql db查询工作很多,我想为每个表创建一个自己的.php文件,其中包含我想通过Ajax Request调用的所有必需函数。
因此,我通过stackoverflow回答获得了以下片段:
$.ajax({ url: '/my/site',
data: {action: 'test'},
type: 'post',
success: function(output) {
alert(output);
}
});
在服务器端,应该读取action
POST参数,相应的值应该指向要调用的方法,例如:
if(isset($_POST['action']) && !empty($_POST['action'])) {
$action = $_POST['action'];
switch($action) {
case 'test' : test();break;
case 'blah' : blah();break;
// ...etc...
}
}
我的问题:
我想通过数据属性分配表单数据,我不知道如何做到这一点。我尝试了以下(这只是猜测哪个不起作用):
var data = $(this).serialize();
$.ajax({ url: '/my/site',
data: {action: 'test', data},
type: 'post',
success: function(output) {
alert(output);
}
});
答案 0 :(得分:1)
serialize()
会将表单中的数据作为字符串返回。您可以使用剩余的查询附加字符串的其余部分。
示例:
<form id="form">
<input name="form_name_1" value="form_value_1">
<input name="form_name_2" value="form_value_2">
</form>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var data = $('#form').serialize();
data += '&action=test';
$.ajax({
url: '/my/site',
data:data,
type:'post',
success:function(output) {
alert(output);
}
});
});
</script>
答案 1 :(得分:0)
您需要将数据指定为参数
var data = $(this).serialize();
$.ajax({ url: '/my/site',
data: {action: 'test', data: data},
type: 'post',
success: function(output) {
alert(output);
}
});
ajax
调用的数据参数需要一个对象,如ECMA / Javascript规范中定义的那样 - 例如一系列键/值对
您可以通过$_POST['data']
就个人而言,我倾向于将json序列化以避免数组周围的http怪癖......
data: {action: 'test', data: JSON.stringify(data)}
然后在PHP中:
$data = json_decode(isset($_POST['data']) ? $_POST['data'] : "{}");
如果发布了数据,它现在将作为复杂对象出现在$data
中,否则$data
将包含一个空对象
答案 2 :(得分:0)
您可以将数据发布为JSON对象
$.ajax({
type: "POST",
url: "/some/url",
data: JSON.stringify(jsobject),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(output){
alert(output);
}
});
在php脚本中你只需要json_decode来获取对象或关联数组。