To JSON and json_decode in PHP and JavaScript

后端 未结 3 1359
别跟我提以往
别跟我提以往 2021-01-21 00:33

I\'m trying to pass a JavaScript object to a PHP script through jquery.ajax(), basically:

var bigArray = new Object();
//Dode
//Start loop
bigArray[         


        
3条回答
  •  星月不相逢
    2021-01-21 01:01

    I think the problem is that normally POST data is sent encoded as key=value&key2=value2, and you're sending it as JSON. Try accessing the raw post data as follows:

    $data = file_get_contents('php://input');
    var_dump($data);
    var_dump(json_decode($data));
    

    and see if that works. If not, please post in your question what it returns, if anything.


    Based on the comment below and additions to the OP.

    Did the var_dump of $data copy-paste correctly? The reason I ask is that this: string'{"0"{"name" does not look right to me. That isn't valid JSON or a properly encoded POST string. It might be that some of the characters got encoded when you copied and pasted.

    Either way, you're now getting the result you need. The stdClass is just a blank container that it puts the data into, which you can access using the normal object syntax. In this case, you'd have to do $data->{0}->name I think, because of that 0. If you do $data = json_decode($data, true) it will be an associative array, and you can access the POST'ed data as $data[0]['name'].

    If you want to keep exploring this, it might be helpful to show the results of doing window.console.dir(data) right before you do the ajax request, and make sure when you var_dump(data), you view the source of the page to copy and paste. window.console.dir(data) will show data's properties in the Firebug window (you are using Firebug, right?). It also works in Chrome's debugger, and maybe others as well. Like I said though, it looks like you're probably getting what you need already, so investigating isn't necessary.

提交回复
热议问题