在提交表单时,如何将带有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();
}
EDITED
伙计,我试过这样:
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功能,任何人都可以帮助我吗?
答案 0 :(得分:1)
在ajax调用中,您传递的数据转换为action = savedata,但在PHP中,您试图从POST数据中获取“名称”。使用您的ajax请求,表单数据不会自动发送,因此您需要手动发送它,如下所示:
jQuery.ajax({
type: 'POST',
url: myAjax.ajaxurl,
data: {action: 'savedata', name: name},
sucess: ...
或使用.serialize()jQuery函数,该函数会自动为您自动序列化表格中的数据(然后您可以将其作为数据参数提供)。
答案 1 :(得分:1)
如果您正在执行此操作,我找不到您发布名为“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);
}
});
};
另请看:
希望这有效。让我知道它是怎么回事。
答案 2 :(得分:1)
尝试序列化您的数据并提供内容类型“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);
}
});