ajax传递多个vars,一个是数组,如何传递和读取数组?

时间:2013-09-13 18:14:41

标签: php html ajax jquery

环境:PHP 5.3.5 MySQL Server 5.5.8

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

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

我似乎无法检查php端的值,出现错误,我正在回复"没有插入联系人",因此插入失败。

以下是我收到的ajax函数的输出:

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

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

这是javascript,它调用ajax:

$("#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中传递的三个vars正在向php发送它,但我认为这里有一些不妥之处。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分: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提交表单并在成功回调中提供该消息提示。

答案 1 :(得分:0)

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

“处理程序=” +处理器+ “&安培; stu_id =” + stu_id + “&安培; selectedOptions =” + selectedOptions

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