【问题标题】:JQuery Do something when data returned from .postJQuery 当数据从 .post 返回时做一些事情
【发布时间】:2012-06-05 13:54:31
【问题描述】:

我有一个使用 JQuery 中的 .post 函数来运行 php 脚本的站点。此脚本将一些数据添加到数据库中,但如果数据已存在于数据库中,则不会添加数据。根据是否添加数据,我希望 javascript 做不同的事情。我不知道如何让 php 返回一个表示“输入数据”或“未输入数据”的值,以便 javascript 可以使用该值来决定下一步操作。

这是 javascript,我只希望在 php 返回数据已输入数据库的情况下进行追加。

$('#addpios').click(function() {
  var scopesheetidvalue = $("#scopesheetid").val();
  var piovalue = $("#pioselected").val();
$.post("addpio.php", { scopesheetid: scopesheetidvalue, pionumber: piovalue },function(data){
$('#pioslist').append("<li><input class='removepio' type='submit' value='"+piovalue+"' /><span class='listitem'>PIO "+piovalue+"</span></li>");} 
    );   
}); 

这里是 PHP

$scopesheetid = $_POST['scopesheetid'];
$pionumber = $_POST['pionumber'];
$alreadyexisitssql = "SELECT * FROM [ScopesheetPIO] WHERE [ScopesheetID]='$scopesheetid' AND [PIONumber]='$pionumber'";
$alreadyexisits=odbc_exec($connection,$alreadyexisitssql);

if(odbc_fetch_row($alreadyexisits)){
//retrun a value that says the data already exists
}
else{
    $addpiosql = "INSERT INTO [ScopesheetPIO] ([ScopesheetID], [PIONumber]) VALUES ('$scopesheetid', '$pionumber')";
    $addpioresult=odbc_exec($connection,$addpiosql);
//retrun a vlaue that the data was added
}

我真正想要的是一种将 PHP 脚本中的值传递回 Jquery 的方法

【问题讨论】:

    标签: php jquery return .post


    【解决方案1】:

    在 PHP 中构建一个数组并将其输出为 JSON。然后检查脚本中返回的 JSON。

    if(odbc_fetch_row($alreadyexists)){
        // Return a value that says the data already exists
        $result = array(
            "error" => "Data already exists"
        );
    } else {
        // Database stuff goes here...
        // Return a value that the data was added
        $result = array(
            "success" => 1
        );
    }
    echo json_encode($result);
    

    JavaScript $.post 回调:

    function(data) {
        if(data.success) {
            // Append element to HTML
        } else {
            // An error occurred, inform the user
            // Don't actually use alert(), this is just for demonstrating purposes
            alert(data.error);
        }
    }
    

    稍后,您可以使用额外数据创建更复杂的响应,只需将它们添加到 $result 数组并从 JavaScript 中的 data 读取它们。

    【讨论】:

      【解决方案2】:

      在您的 PHP 中编写任何您将在回调函数中测试的内容:

      PHP

      if(odbc_fetch_row($alreadyexisits)){
       echo "ko";
      }
      else{
          $addpiosql = "INSERT INTO [ScopesheetPIO] ([ScopesheetID], [PIONumber]) VALUES ('$scopesheetid', '$pionumber')";
          $addpioresult=odbc_exec($connection,$addpiosql);
          echo "ok";
      }
      

      JS

      $.post("addpio.php", { scopesheetid: scopesheetidvalue, pionumber: piovalue },function(data){
          if( data == 'ok' ) {
              $('#pioslist').append("<li><input class='removepio' type='submit' value='"+piovalue+"' /><span class='listitem'>PIO "+piovalue+"</span></li>");
          }
      });  
      

      【讨论】:

        【解决方案3】:

        您可以轻松地将数据从脚本传递到 jQuery。 IMO 我认为最好使用 JSON,因为它更整洁。

        PHP (for example):
        $arrayOfData=array("val1"=>"value","val2"=>"value");
        
        //encode it
        $arrayOfData=json_encode($arrayOfData);
        
        //print it on screen
        echo $arrayOfData;
        

        然后使用 .getJSON 在 jQuery 中获取它。

        $.getJSON("url_of_php_fle",function(myData){
        
        //now use myData as the array:
        alert(myData.val1);//which will give you "value" as what you set in PHP
        
        }):
        

        真的就是这么简单。

        【讨论】:

          【解决方案4】:

          我会将您的 jQuery 修改为以下内容:

          $.post('addpio.php', { ... }, function(data) {
              if (data.result) {
                  $('#pioslist').append(...);
              }
          }, 'json');
          

          在您的 PHP 文件中,插入数据时使用它:

          echo json_encode(array(
              'result' => TRUE
          ));
          

          当数据已经存在时使用这个:

          echo json_encode(array(
              'result' => FALSE
          ));
          

          【讨论】:

          • 谢谢,这是有道理的,但我卡住了。当我自己运行 PHP 时,它会生成 JSON 位,但是当我运行 JQuery 时,它似乎无法检测到 JSON。
          • function(data) { ... } 之后添加了, 'json' 吗?另外,#addpios 是什么?是按钮还是链接?
          • 你能 alert(data);console.log(data); 并在此处粘贴 JSON 吗?
          • 抱歉这里是$('#addpios').click(function() { var scopesheetidvalue = $("#scopesheetid").val(); var piovalue = $("#pioselected").val(); $.post('addpio.php', { scopesheetid: scopesheetidvalue, pionumber: piovalue }, function(data) { alert(data); }, 'json'); }); 和PHP if(odbc_fetch_row($alreadyexisits)){ // Return a value that says the data already exists echo json_encode(array( 'result' =&gt; FALSE )); } else{ // Return a value that the data was added echo json_encode(array( 'result' =&gt; TRUE )); }
          • 我弄清楚了它是什么,我还在页面上呼应了整个结果表,这让它感到困惑。感谢大家的帮助
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-17
          • 1970-01-01
          • 2011-12-17
          • 1970-01-01
          相关资源
          最近更新 更多