【问题标题】:javascript callbacks based on html/php output, retrieving variable基于 html/php 输出的 javascript 回调,检索变量
【发布时间】:2011-04-05 13:44:15
【问题描述】:

我正在使用 jquery 从表单中发布数据(通过 jquery 表单插件 - http://jquery.malsup.com/form/

我能够收到的唯一回调(在“成功:”部分中)是使用成功的“html”:function(html) { ... }。

能否仅根据 html 输出区分成功响应?

基本上我想要一些可以做到这一点的东西..

成功:function(html, some_other_variable) {

如果 (some_other_variable == 1) {

//做某事

} 否则 {

//做点别的事情

}

}

我一直在这里阅读:http://api.jquery.com/jQuery.post/ .. 但没有运气

提前致谢, 菲尔

【问题讨论】:

    标签: jquery ajax forms jquery-plugins post


    【解决方案1】:

    如果我做对了,你实际上可以用你想要的任何参数发送 json。不知道 PHP 中的语法是怎样的,但是在 .NET MVC 中你可以这样做。

    Ajax 调用

    $.ajax({ dataType: 'json' ... });
    

    返回结果

    return Json(new {status = "your status", html = "your html"}, JsonRequestBehavior.AllowGet);
    

    在你的成功回调函数中

      success: function (response) {
        if (response.status == 'success') {
          var html = response.html;
          // do something with html
        } else {
          // do something else
        }
      }
    

    希望这会有所帮助!

    【讨论】:

    • 正如你给出的答案几乎与我相同,我将提供 PHP 语法:return json_encode( Array( 'status' => 'your status', 'html' => 'your html' ) );
    • 正如你和我同时回答的那样,我不知道。不过还好你知道 PHP 语法。
    • 不不——对不起——我不是说你抄袭了我的答案或任何东西。抱歉措辞不佳!你甚至比我多几秒钟。我只是想说我想用 PHP 来回答你的问题,因为它是一个有效的答案。我也为你的答案 +1。 :)
    • 感谢您的帮助。我确实想要 PHP 中的响应,所以你的两个答案都有很大帮助。
    • 我很高兴它有帮助.. JAAulde - 没有难过的感觉,只是一些误解 :)
    【解决方案2】:

    你从服务器返回的数据就是你在success方法中得到的数据。您可以返回包含所需状态变量和所需标记的不同结构:

    {
      "status": 1,
      "html": "<p>Test</p>"
    }
    

    并将您的 dataType 选项设置为“json”。

    或者您可以添加一个输出标头并从 XHR 对象中请求该标头。

    【讨论】:

      【解决方案3】:

      success 函数实际上用 4 个参数响应,responseText、statusText、xhr 对象和一个 jQuery 包装的表单元素。 (documentation)

      如果您将dataType 设置为“json”,则返回的响应将被解析为 JSON。

      假设您正在执行 POST 以响应的页面

      {
         success: true,
         name: 'hello',
         someothervalue: 'world'
      }
      

      你的代码是……

      $('form').ajaxForm({
          dataType: 'json',
          success(response, status, xhr, form) {
              alert(response.name);
          }
      });
      

      在这种情况下,response 将填充 json,您可以如图所示访问。

      这里的诀窍是,无论表单要发布到哪个页面,您都需要实际返回 JSON 响应。

      【讨论】:

      • IMO,响应状态在成功方法中的用途非常有限。但我认为你同意你展示如何发送他自己的结构和其中的状态。 :)
      • 这是否意味着我需要在 json 中编码 php 输出? (使用 json_encode)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 2019-06-29
      相关资源
      最近更新 更多