$ .post如何知道要返回的数据?

时间:2014-07-13 03:09:25

标签: php jquery sql post

我不确定我是否会以错误的方式解决这个问题,而且如果有人可以指出我的错误或让我知道我是否走错了路,我无法找到我想要的东西那简直太好了。

我正在尝试使用$.post('example.php',data1:foo,data2:bar})将表单数据发布到另一个文件。 example.php页面包含INSERT sql查询。

执行此操作后,example.php页面将发布的数据插入到数据库中,如何返回pass / fail / ANYTHING?

我已经尝试了我在这里和其他网站上看到的各种$.post('..php',{data..},function(data){})示例,但是成功函数似乎无论如何返回,即使INSERT语句中存在明显的问题。

以下是我的代码示例:

//validate transaction form
  $("#frmTransaction").validate({
    submitHandler: function(element) { 
      hidePageMessages();
      var invnum = document.frmTransaction.invnum.value;
      var recnum = document.frmTransaction.recnum.value;
      var status = document.frmTransaction.status.value;
      $.post("tran_add.php",
      {
        invnum:invnum,
        recnum:recnum,
        status:status
      },
      function(data){
        my_function(data)
      }
      );
    },
    rules: {        
      description: "required",
      amount: "required",
      account: "required",
      category: "required",
      payee: "required"
    },
    errorClass:"errorinline",
    validClass:"valid"

  });

  function my_function(data){
    alert(data);
  }

所以,如果tran_add.php中的sql语句成功执行,那么我只需执行my_function,它将向用户显示为“pass”消息。 tran_add.php是否需要执行除sql语句以外的任何操作,即返回成功或其他什么?或者,我是否以错误的方式解决这个问题?

提前感谢任何帮助,建议,在头脑后方留下遗漏的东西等等

5 个答案:

答案 0 :(得分:1)

你应该这样做,例如:

$mySqlInsertStatement = "insert statement"

If($mySqlInsertStatement) //to check for successful insert
   Echo 0
Else
   Echo 3

(当然如果陈述是小写等)

然后在成功陈述中,你应该说:

If(success == 0)
   //success
Else
   //not success

答案 1 :(得分:0)

Inside Function.Use $.each();

  function(data){
       $.each(data,function(key,value){
           alert(key+""+value);
    });
   }

答案 2 :(得分:0)

您只需回显成功的结果,jquery将为您完成剩下的工作。

我不是一个真正有经验的专业人士,我不知道幕后发生了什么。在我看来,它是这样的:

当php回应成功的结果时,jquery / ajax会看到在执行脚本后在网页中发布了某些内容,并了解该消息意味着成功,并执行其成功功能。如果执行过早停止,并且没有任何回显或执行'过早'死亡或错误消息在else子句中回显,则表示执行中存在错误,并且将不会运行成功函数。

希望有人可以更好地解释幕后发生的事情。

无论如何,问题的实际情况是如果你在脚本末尾的if子句中回显“执行成功”这样的消息,那么你的js成功函数才会被执行。

答案 3 :(得分:0)

我很确定只要服务器有任何非错误响应(HTTP Code 400/404/500 /等),就会调用成功函数。所以,你有两个选择:

1)让你的php app如果插入不成功则设置错误:

<?php
http_response_code(502);
?>

2)让php返回成功函数可以解析的一些数据,以了解发生了什么(如果可以,我建议返回json),例如:

{"result":"error" "details":"Database Insert failed..."}

或者

{"result":"success", "new_id":42}

我倾向于将这些方法结合起来。

答案 4 :(得分:0)

$.post()会根据您发送给data的{​​{1}}返回数据。在url上,您需要以下条件:

tran_add.php

测试你应该改变

$mysqli->query("INSERT table (column1,column2) VALUES ('value1','value2')");
if($mysqli->affected_rows > 0){
  // now return your stuff
  echo json_encode(array('test' => 'worked', 'see' => 'now'));
}

function my_function(data){
  alert(data);
}