0

环境:PHP 5.3.5 MySQL 服务器 5.5.8

我有 3 个变量要通过 ajax 调用发送到 php。如果用户从选择列表中选择一个或多个值,则其中之一可能是数组。

在对 php 进行 ajax 调用之前,我可以在 jQuery 中查看警报中的值。

我似乎无法查看 php 端的值,出现错误并且我返回“未插入联系人”,因此插入失败。

这是我在调用 ajax 函数之前收到的输出:

handler= setStActivitySharing, stu_id=31, user_ids=3,5

我相信我如何包装我的数据并将其发送到 php 是不正确的。

这是调用ajax的javascript:

$("#btnSubmit").click(function (e)
      {


       var selectedOptions = $("#stActivityShareList").val();
       var handler = $("#handler").val();
       var stu_id = $("#stu_id").val();             
      //   $("#output").html("<b>You are sharing this file with: </b>" + selectedOptions);

       insertContactsForActivitySharing(handler, stu_id, selectedOptions);
 });

 function insertContactsForActivitySharing(handler, stu_id, selectedOptions)
{

  alert("handler="+handler +", stu_id="+ stu_id + ", selectOptions="+ selectedOptions);

  //IS THIS CORRECT?!?!?!?!
  var dataObject = JSON.stringify({
      handler: handler,
      stu_id: stu_id,
      selectedOptions:selectedOptions
  });

   $.ajax({
            type: "POST",
            url: "models/ajaxHandler.php",
            data: dataObject,
            datatype: "json",
            success: function(result){


                if (result !== null)
                {
                    alert(result);
                    //$("#output").html(result);
                    HideDialog(false);
                    e.preventDefault();              
                }

            },
            error: function(){
                alert("ajax failure: could not share activity the selected persons");
            }
       });
}

AjaxHandler.php 如下....

if(isset($_POST['handler']))
{
    $handler = $_POST['handler'];
    if (!empty($handler)){
        echo $handler;
       // processHandler($handler);
    }else{
        echo "Unable to complete the request: " + $handler+". ";
    }
}

即使只是试图回显处理程序也会停止整个过程。我希望能够确认我在 ajax 中传递的三个变量正在进入 php,但我认为这里有问题。谁能帮我?

4

2 回答 2

0

当您的表单方法发布时,您将处理程序作为 get var 传递。您可以更改您的 php 以检查$_GET['handler']

if(isset($_GET['handler']))
{
    do_alert("form handler");
    $handler = $_GET['handler'];
    if (!empty($handler)){
        processHandler($handler);
    }else{
        echo "Unable to complete the request: " + $handler+". ";
    }
}

或者,您可以在表单中添加一个隐藏的输入字段,该字段将作为 post var 发送:

<input type="hidden" name="handler" value="share" />

顺便说一句,您的#btnSubmit听众可能没有做任何事情,因为您的提交按钮正在提交表单。您不太可能看到侦听器试图传递的消息。您应该在 PHP 处理表单或通过 ajax 提交表单后传递该消息,并在成功回调中提示该消息。

于 2013-09-13T18:18:40.533 回答
0

我删除了 var dataObject,并将 ajax 调用中的数据分配如下:

"handler="+handler+"&stu_id="+stu_id+"&selectedOptions="+selectedOptions

这是倒退了一步,但我不会抱怨,因为它有效:)

于 2013-09-17T13:17:11.767 回答