关于ajax php和json

时间:2014-06-06 11:41:17

标签: php jquery ajax json

我的ajax代码如下所示:

jQuery(document).ready(function($) {

$(".respond").submit(function(event){
  ..................//something here
    request = $.ajax({
        url: "/admin/check.php",
        type: "post",
        data: {formData:serializedData,submit_type:submit_name},
        datetype: JSON
    });
    request.done(function (response, textStatus, jqXHR){
        console.log(response);
    });
    request.fail(function (jqXHR, textStatus, errorThrown){
        console.error(
            "The following error occured: "+
            textStatus, errorThrown
        );
    });
    request.always(function () {
        $inputs.prop("disabled", false);
    });
    event.preventDefault();
});
});

当我使用像这样的PHP代码时

var_dump($_POST["formData"]);

它给出了这样的结果

"string(400) "user_edit=submit&user_id=1 ..........
"

我想将userid存储在php变量中,如此

$username=......

但是当我尝试这样做时

$username=$_POST["formData"]["userid"] 

它给出了错误

  

警告:非法字符串偏移'user_edit'    C:\ Program Files(x86)\ Ampps \ www \ admin \ check.php 在线    5
string(1)“u”“

我想知道如何获得该用户ID的值或类似的东西。

3 个答案:

答案 0 :(得分:0)

正如您在转储formData时看到的那样,它是一个字符串!你想访问它的一个元素,因为它是一个数组 - >错误。

更好的方法可能是在表单中包含“submit_type”并且只有

data: serialisedFormData 

作为您的发布数据。

答案 1 :(得分:0)

参数formData是序列化字符串。因此,在发送AJAX调用的服务器端页面上,您必须使用PHP parse_str function解析序列化字符串。所以在php页面上你应该写一些东西:

<?php
$formdata = $_POST['formData'];
// For example I suppose that formData has values something like : first=value&arr[]=foo+bar&arr[]=baz
//then
parse_str($formdata);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

?>

答案 2 :(得分:0)

<form name="ajaxform" id="ajaxform" action="ajax-form-submit.php" method="POST">
  First Name: <input type="text" name="fname" value =""/> <br/>
  Last Name: <input type="text" name="lname" value ="" /> <br/>
  Email : <input type="text" name="email" value=""/> <br/>
 </form>

//callback handler for form submit
$("#ajaxform").submit(function(e)
{
  var postData = $(this).serializeArray(); //note here serialize it before post it to server
  var formURL = $(this).attr("action");
  $.ajax(
  {
    url : formURL,
    type: "POST",
    data : postData,
    success:function(data, textStatus, jqXHR)
    {
        //data: return data from server
    },
    error: function(jqXHR, textStatus, errorThrown)
    {
        //if fails     
    }
  });
 e.preventDefault(); //STOP default action
 e.unbind(); //unbind. to stop multiple form submit.
});

 $("#ajaxform").submit(); //Submit  the FORM

然后尝试在你的服务器php文件上print_r($ _ POST),我认为它适合你