2013-12-23 120 views
0

在这个脚本中,数据被发送,但它不发送变量的更新值。按预期发送硬编码数据。我该如何解决这个问题或者绕过它?AJAX不发送数据到PHP

username = ''; // supposedly these variables are global 
    tree_name = ''; // I also tried plugging in- $('#username').data("username") -directly.. same results. 

    $(function() { 
     username = $('#username').data("username"); // updating value 
     tree_name = $('#tree_name').data("tree_name"); // idem.... 
    }); 


    var options = { 
     type: "POST", 
     url: "/decision/p_tree2/", 

     data: { 
      username: username,  // this should send the data 
      tree_name: tree_nam  // ... 
     }, 

    success: function(response) { 
    console.log(response);  
    } 
}; 

$("form").ajaxForm(options); 

PHP:

public function p_tree2(){ 
    $data = Array(); 
    $data['username'] = $_POST['username']; 
    $data['tree_name'] = $_POST['tree_name']; 

    echo print_r($data); // result: both $data['username'] and $data['tree_name'] equal "" 

} 
+1

它可能是功能的定位,一个在另一个之前可能导致问题。例如PHP函数在创建之前从其他函数调用数据,反之亦然 – BuddhistBeast

+0

您放置这些函数的地方很重要。在这种情况下,你不会将AJAX表单代码放入jQuery'ready'代码块中。尝试先让他们的位置正确。 – Licson

+0

jQuery“ready”代码块究竟是什么?..谢谢 – JeanAlesi

回答

1

重新格式化您的代码像下面。还要纠正数据中tree_name中的错字。您使用了tree_nam

$(function() { 
    var username, tree_name,options; 

    username = $('#username').data("username"); 
    tree_name = $('#tree_name').data("tree_name"); 

    console.log(username); //make sure 
    console.log(tree_name); // console outputs what you need to pass 

    options = { 
     type: "POST", 
     url: "/decision/p_tree2/", 

     data: { 
      username: username,  // this should send the data 
      tree_name: tree_name  // ***correct this typo*** 
     }, 

     success: function(response) { 
      console.log(response); 
     } 
    }; 

    $("form").ajaxForm(options); 
});