环境: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发送它,但我认为这里有一些不妥之处。任何人都可以帮助我吗?
答案 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
这是向后退一步,但我不会抱怨因为它有效:)