Jquery 在相同的Ajax请求中发布和获取

Jquery 在相同的Ajax请求中发布和获取,jquery,cakephp,Jquery,Cakephp,我在我的应用程序中使用了一个ajax帖子,比如 $.ajax({ type: "POST", url: "http://localhost/FormBuilder/index.php/forms/saveForm/"+user_id, data: "formname="+formname+"&status="+status, success: function(msg){ // alert( "Data Saved: " + msg);

我在我的应用程序中使用了一个ajax帖子,比如

 $.ajax({
     type: "POST",
    url: "http://localhost/FormBuilder/index.php/forms/saveForm/"+user_id,

    data: "formname="+formname+"&status="+status,
     success: function(msg){
     // alert( "Data Saved: " + msg);
                }//success
 });//ajax
在上面的ajax帖子中,我用用户id保存表单

我是否能够获得我在Ajax请求中保存的表单的表单id。如果是,怎么办

我已经尝试过使用Ajax单独获取。但是在这里,我想混合使用post和get。。 我可以那样做吗。。 编辑:

我可以为Ajax POST方法返回任何值吗。因为我想返回已保存表单的表单id

编辑:

以上是返回的值,我只需要th id 41,我应该如何获得它

编辑:

即使我按照建议使用上述代码进行了尝试,但仍无法获得警报消息

我的控制器代码如下

     function saveForm()
    {
            //$userId=$this->Session->read('userId');
        $this->data['Form']['name']=$this->params['form']['formname'];
            $this->data['Form']['created_by']=$this->Session->read('userId');
            $this->data['Form']['status']=$this->params['form']['status'];
            $this->data['Form']['access']="Private";
            $userId=$this->Form->saveForms($this->data);
            $formid = $this->Form->find('all', array('fields' => array('Form.id'),
                                    'order' => 'Form.id DESC'                                                                           ));



            $this->set('formid',$formid);

    }
我的save_form.ctp

      <?php
     $data=array();

      ?>
     <?php foreach ($formid as $r): 


      array_push($data, array('id' => $r['Form']['id']));

    endforeach; 

     echo json_encode(array("forms" => $data));

    ?>

是的,您可以这样做。您可以发布到任何您喜欢的URL,带或不带查询字符串

您可以访问$\u GET数组中的任何常规查询字符串参数,或者在您的情况下,从
$\u服务器['REQUEST\u URI']
解析它。发布的数据将按预期以$\的形式发布

编辑的Q.#1“我可以为Ajax POST方法返回任何值吗?”

是的,您可以返回您想要的任何内容作为Ajax响应。如何处理该响应取决于Javascript

编辑了Q.#2“如何读取响应中的值”

您将得到一个JSON响应,如果可以,它可以为您将其解析为一个对象。例如,尝试以下方法:

$.ajax({
         type: "POST",
        url: "http://localhost/FormBuilder/index.php/forms/saveForm/"+user_id,
        datatype: 'json',
        data: "formname="+formname+"&status="+status,
         success: function(json){
            alert( "id is : " + json.forms[0].id);
                                }//success
 });//ajax

我假设作为ajax请求的结果,表单是 由PHP脚本保存,您需要获取保存的表单的id

如果是这样,请将php脚本设置为
echo
保存的表单的id,作为其 只有输出。然后您可以使用:

 success: function(id{
         // alert( "Data Saved: " + id);
                                }//id is the id
 });//ajax

不能在同一个AJAX请求中混合使用POST和GET,因为AJAX请求是HTTP请求,而单个HTTP请求只有一个方法(GET、HEAD、POST、PUT、DELETE、TRACE或CONNECT,尽管我从未见过使用后两者,PUT和DELETE并不常见)


除此之外,还不清楚“表单id”是什么意思——当发布成功时,您要发布到的URL是否返回某个唯一标识符

即使是post请求也会向客户端返回一些数据。如果服务器端脚本返回任何数据,它将被传递到
success:function(data){}
函数中。从那里解析它

简单测试,但这里有一个解决方案,似乎工作。。。 表格页:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="../../scripts/ajax.js"></script>
<script type="text/javascript">
function send_ajax(){
    get = '?get_text=' + document.getElementById("get_text").value;
    get = get +'&get_text2=' + document.getElementById("get_text2").value;
    post = "post_text="+document.getElementById("post_text").value;
    post = post + "&post_text2="+document.getElementById("post_text2").value;
    path = 'prosses.php'; // path to server side prossessing page.
    element = 'result'; // placeholder for the html returned from the server side prossessing page.
    ajax(path,get,post,element);
    }
</script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>ajax testing page</title>
</head>

<body>
GET1: <input type="text" id="get_text" onkeyup="send_ajax()" /><br />
GET2:<input type="text" id="get_text2" onkeyup="send_ajax()" />

  <br /><br />

<form action="" method="post">
POST1:<input id="post_text" type="text" /><br />
POST2:<input id="post_text2" type="text" /><br />
<input type="button" value="Button" onclick="send_ajax()" /><br />
</form>
<span id="result">Result will appear here</span>
</body>
</html>
php处理页面:

GET1 = <?php echo $_GET['get_text']; ?><br>
GET2 = <?php echo $_GET['get_text2']; ?><br>
POST1 = <?php echo $_POST['post_text']; ?><br>
POST2 = <?php echo $_POST['post_text2']; ?><br>
GET1=
GET2=
POST1=
POST2=
我希望这有帮助


布莱斯。

事实上,这很简单

var myJavaScriptVariable = 'world';

$.ajax({
 type: "POST",
url: "http://localhost/FormBuilder/index.php/forms/saveForm/"+user_id+?myFirstGetParamater=hello&mySecondGetParameter='+ myJavaScriptVariable+'",

data: "formname="+formname+"&status="+status,
 success: function(msg){
 // alert( "Data Saved: " + msg);
            }//success
});

您可以使用
$\u POST
数组访问POST数据,并使用
$\u GET
获取数据。如何获取该返回值。。请看,我又添加了一个编辑。我尝试了msg.forms[0][“id”]但没有任何效果。我认为他的意思是,“我可以用查询字符串发布到URL吗?”这确实更有意义,尤其是在编辑之后。如果带有查询字符串的URI引用的资源与没有查询字符串的URI引用的资源不同,这可能是一个错误,但我不确定这是否可能。(RFC2616对RFC1737和RFC1738下注,我不太熟悉。)这实际上是不正确的。你可以肯定地将两者混合在一起。事实上,有时这很重要。你到底想做什么?
var xmlhttp;
function ajax(path,get,post,element){
    ajax_suite(path,get,post);

function ajax_suite(path,get,post){
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null){
  alert ("http requests are not supported by your browser");
  return;
  }
  if(get == ""){
    rand = "?sid="+Math.random();
  }else{
    rand = "&sid="+Math.random();
  }
var url=path + get + rand;
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("POST", url, true); 
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", post.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send(post); 
}

function stateChanged(){

if (xmlhttp.readyState==3){
document.getElementById(element).innerHTML="Loading...";
}
if (xmlhttp.readyState==4){
document.getElementById(element).innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject(){
if (window.XMLHttpRequest){
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject){
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}
}
GET1 = <?php echo $_GET['get_text']; ?><br>
GET2 = <?php echo $_GET['get_text2']; ?><br>
POST1 = <?php echo $_POST['post_text']; ?><br>
POST2 = <?php echo $_POST['post_text2']; ?><br>
var myJavaScriptVariable = 'world';

$.ajax({
 type: "POST",
url: "http://localhost/FormBuilder/index.php/forms/saveForm/"+user_id+?myFirstGetParamater=hello&mySecondGetParameter='+ myJavaScriptVariable+'",

data: "formname="+formname+"&status="+status,
 success: function(msg){
 // alert( "Data Saved: " + msg);
            }//success
});