提交表单时,如何将任何带有ajax的$_Post['']传递给php函数?
该函数使用AJAX,但无法接收帖子的值。我进行了测试,警报返回null。
我正在使用wordpress。
window.onload=function(){
jQuery('#newIdeaForm').submit(function(events){
call_ajax(events);
events.preventDefault();
});
};
function call_ajax(){
var name = $("#name").val();
jQuery.ajax({
type: 'POST',
url: myAjax.ajaxurl,
data: {action : 'savedata'},
success: function(response) {
var json = jQuery.parseJSON(response);
alert(json.nome);
}
});
};
function savedata(){
$name = $_POST['name'];
$my_post = array(
'post_title' => 'teste',
'post_content' => 'teste',
'post_status' => 'publish',
'post_author' => $user_id,
);
wp_insert_post($my_post);
$callback = array('name' =>'teste','title'=>'teste','idea'=>'teste','nome' => $name);
$myJson = json_encode($callback);
echo ($myJson);
die();
}
编辑
伙计,我试过这样:
function call_ajax(){
var serializedForm = jQuery('#newIdeaForm').serialize();
serializedForm.action = 'savedata';
jQuery.ajax({
type: 'POST',
url: myAjax.ajaxurl,
data: serializedForm,
success: function(data) {
alert(data);
}
});
但当我通过浏览器调试时,它似乎没有添加任何类似操作的内容,所以它没有转到php函数,有人可以帮助我吗?
在ajax调用中,您传递的数据被转换为action=savedata,但在PHP中,您试图从POST数据中获取"name"。使用ajax请求时,表单数据不会自动发送,因此您需要手动发送,如下所示:
jQuery.ajax({
type: 'POST',
url: myAjax.ajaxurl,
data: {action: 'savedata', name: name},
sucess: ...
或者使用.serialize()jQuery函数,它将自动为您序列化表单中的数据(然后您可以将其作为数据参数提供)。
如果这就是您正在执行的,我找不到您发布名为"name"的密钥。
function call_ajax(){
var name = $("#name").val();
jQuery.ajax({
type: 'POST',
url: myAjax.ajaxurl,
data: {action : 'savedata', name: 'namevalue'},
success: function(response) {
var json = jQuery.parseJSON(response);
alert(json.nome);
}
});
};
还可以看看:
jQuery.ajax和jQuery.post
希望这能奏效。让我知道进展如何。
尝试序列化数据并提供类似的内容类型"application/json;charset=utf-8"
var url="@Url.Action("action","Controller")";
var jsonSerialized=JSON.stringify(data);
$.ajax({
type: "POST",
url: url,
dataType: "json",
contentType: "application/json; charset=utf-8",
data: jsonSerialized,
success: function (result) {
alert(result);
}
});