11

我创建了这样的数组["9", "ques_5", "19", "ques_4"]。现在我想将它从 JS 发送到 PHP,但我没有得到正确的结果。我的 JS 代码是:

$(".button").click(function(e) {

    e.preventDefault();
    $.ajax({
        type    : 'post', 
        cache   : false,
        url     : 'test/result.php',
        data    : {result : stuff},
        success: function(resp) {
            alert(resp);
        }
    });
});

在上面的代码stuff中是一个包含记录的数组。如何使用上面的代码发送这个数组,然后在 PHP 中我想处理这个数组,就像ques_5键一样,9成为那个键的值。

4

5 回答 5

22

您可以将数据作为JSON对象传递给 PHP 脚本。假设您的 JSON 对象如下:

var stuff ={'key1':'value1','key2':'value2'};

您可以通过两种方式将此对象传递给 php 代码:

1. 将对象作为字符串传递:

AJAX 调用:

$.ajax({
    type    : 'POST',
    url     : 'result.php',
    data    : {result:JSON.stringify(stuff)},
    success : function(response) {
        alert(response);
    }    
});

您可以处理传递给result.phpas 的数据:

$data    = $_POST["result"];
$data    = json_decode("$data", true);

//just echo an item in the array
echo "key1 : ".$data["key1"];

2.直接传递对象:

AJAX 调用:

$.ajax({
    type    : 'POST',
    url     : 'result.php',
    data    : stuff,
    success : function(response) {
        alert(response);
    }    
});

直接result.php$_POST数组中处理数据:

//just echo an item in the array
echo "key1 : ".$_POST["key1"];

这里我推荐第二种方法。但你应该尝试两者:-)

于 2013-02-13T05:36:16.297 回答
2

如果您想发送键值对,这就是我所看到的,最好使用 PHP JSON 库(就像这个... http://php.net/manual/en/book.json.php )

然后您可以使用 JSON 格式发送实际的键值对,例如... {"ques_5" : "19", "ques_4": "19"}

于 2013-02-13T04:45:54.333 回答
2

试试这个

var array = ["9", "ques_5", "19", "ques_4"];
console.log(array.join(","));

上面的代码将输出用逗号分隔的字符串,9,ques_5,19,ques_4然后将其粘贴到 ajax 调用。

然后在php explode那个字符串中。

其他可能的解决方案。

第一的

var obj = { 'item1': 'value1', 'item2': 'value2' };

$.ajax(
{
    type:  'post', 
    cache:  false ,
    url:  'test/result.php',
    data:  { result : JSON.stringify(obj) },
    success: function(resp)
    {
        alert(resp);
    } 
});

第二

var a = $.JSON.encode(obj);

$.ajax(
{
    type:  'post', 
    cache:  false ,
    url:  'test/result.php',
    data:  { result : a },
    success: function(resp)
    {
        alert(resp);
    } 
});

In PHP File

<?php
    $json = $_POST["data"]
    var_dump(json_decode($json));
?>
于 2013-02-13T04:46:25.667 回答
1

您可以将array in json格式发送到 php,然后使用json_decode函数来取回数组,例如

在 ajax 调用中,您必须为此发送 json,您需要首先制作值数组,以便您以正确的形式获取它,以便您的 json 看起来像{"ques_5":"9","ques_4":19}

并在ajax调用中使用

 data: JSON.stringify(`your created json`),
 contentType: "application/json; charset=utf-8",
 dataType: "json",

在 PHP 中它看起来像

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>
于 2013-02-13T04:53:51.717 回答
0

我想分享一个对我有用的完整示例,以避免为每个 PHP 函数创建每个 JavaScript 函数

// 在 HTML 端,来自链接的简单 JavaScript 调用

 <a href="javascript:CargaZona('democonllamada', 'tituloprin', {'key1':'value1','key2':'value2'})" >test</a>
<div id='tituloprin' >php function response here!</div>

// 在 JavaScript 端

function CargaZona(fc, div, params) {
    var destino = "#" + div;
    var request = $.ajax({
        url : "inc/phpfunc.php",
        type : "POST",
        data : {
            fc : fc,
            params : JSON.stringify(params)
        },
        dataType : "html"
    });

    request.done(function (msg) {
        $(destino).html(msg);
    });

    request.fail(function (jqXHR, textStatus) {
        alert("Request failed: " + textStatus);
    });
}

// 在 phpfunc.php 页面上

<?php

$params = "{'key1':'value1','key2':'value2'}"; 
$fc = 'def';
if (isset($_POST['fc']))   {    $fc = $_POST['fc']; }
if (isset($_POST['params']))   {    $params = $_POST['params']; }

switch ($fc) {
    default:
        call_user_func($fc,$params);
}

function democonllamada($params) {
    $params = json_decode("$params", true);
    echo "ok llegaron".$params['key1'];
}

?>
于 2017-07-14T11:49:38.753 回答