使用ajax和php保存表单

时间:2013-12-05 02:36:50

标签: php jquery ajax wordpress forms

在提交表单时,如何将带有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功能,任何人都可以帮助我吗?

3 个答案:

答案 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);
     }
  });

};

另请看:

jQuery.ajaxjQuery.post

希望这有效。让我知道它是怎么回事。

答案 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);
        }
});