1

我目前是 JSON 的新手,我认为它可能非常有用,下面是我用来将 JSON 对象发送到服务器端 php 脚本的数据格式

    // CREATE JSON OBJECT
 var EmailEntity = { "MailMembers":memberecipients , "email":"me@mail.com" } ;

               // send to php server script
        $.ajax({
        type: "POST",
        url: "engine/send-mail.php",
        dataType: "JSON",
        data: {JsonEmailEntity: JSON.stringify(EmailEntity)},
        success: function(Databack){
        alert(Databack);
         }
            });

然后对于服务器端(PHP)

           // get json element and extract contents
           $Json = $_POST['JsonEmailEntity'];
           $EmailEntities = json_decode($Json,true);

           $email = $EmailEntities['email'];

           echo $email;

问题是 Javascript 不会提醒任何返回的任何返回值,即使我用 firebug 检查它表明响应实际上已发送但没有发出警报。想知道Javascript错误在哪里

4

5 回答 5

0

我怀疑它可能与这条线有关

{JsonEmailEntity: JSON.stringify(EmailEntity)},

您不需要对该变量进行字符串化,您可以简单地传递{ JsonEmailEntity: JsonEmailEntity },jQuery 将相应地转换它。

话虽如此,由于您是在服务器端对其进行解码,因此我不确定该错误是否与它有关。

在 Firebug 中,如果您转到控制台选项卡,然后单击请求,从那里单击参数选项卡,您可以看到发送到服务器的内容。

于 2013-02-07T12:49:09.377 回答
0

改变:

echo $email;

至:

echo json_encode($email);
于 2013-02-07T12:45:58.230 回答
0

dataType调用时的属性jQuery.ajax()是服务器返回的数据的类型,而不是发送给它的数据的类型。

数据类型(默认:智能猜测(xml、json、脚本或 html))

类型:字符串

您期望从服务器返回的数据类型。...

jQuery AJAX 调用需要一个本身就是 JSON 的响应,但您只是输出一个字符串。jQuery 隐式尝试将其解析为 JSON,但失败,因此执行错误回调。

于 2013-02-07T12:46:03.837 回答
0

改变这个:

echo $email;

进入这个:

echo json_encode($email);

它应该工作。目前您只是在回显数据,但它不是 JSON 格式的。

添加:

为了将来参考,您也可以这样做:

$email['email'] = $EmailEntities['email']; //or "some@email.com";
$email['username'] = "some_user";

echo json_encode($email);

然后在Javascript中:

success: function(Databack){
    alert("Your username is " + Databack.username + " and your email is " + Databack.email);
}
于 2013-02-07T12:47:53.347 回答
0

更改您的 JavaScript ajax 代码:

   // CREATE JSON OBJECT
       var EmailEntity = { "MailMembers":memberecipients , "email":"me@mail.com" } ;

   // send to php server script
        $.ajax({
        type: "POST",
        url: "engine/send-mail.php",
        data: {JsonEmailEntity: JSON.stringify(EmailEntity)},
        success: function(Databack){
        alert(Databack);
      }
    });

因为如果您将 dataType 指定为 JSON。如果返回类型为 json,将执行成功函数。

或更改您的 PHP 代码如下:

改变:

echo $email;

至:

echo json_encode($email);
于 2013-02-07T12:51:56.877 回答