使用 dojo.xhrPost 发布 JSON 字符串

Posted

技术标签:

【中文标题】使用 dojo.xhrPost 发布 JSON 字符串【英文标题】:Posting JSON string using dojo.xhrPost 【发布时间】:2010-08-04 14:18:48 【问题描述】:

我在尝试使用 dojo.xhrPost 将 JSON 字符串发布到 Zend 框架控制器时遇到问题。

当我将字符串发布到服务器时,我没有收到任何数据发送。我什至尝试只发送“测试字符串”,即使没有发送。

我已经做了一个 var dump 来查看请求的内容,但很清楚,我发布的内容没有参数或数据。我的代码如下所示:

var jsonStr = dojo.toJson(values);
var xhrArgs = (
        url:"/dojo/savedetails/",
        postData: jsonStr,
        handleAs: "text",               
        load: function(data)

            if(data == 'success')

                //success code
               dojo.byId('edit_alert').innerhtml = '<div class="info">Your changes have been saved</div>'

            else

                dojo.byId('edit_alert').innerHTML = '<div class="error">We were unable to save your changes please try again.</div>';
            

                   

    );

    //we now post the data to the server for processing.
    var deferred = dojo.xhrPost(xhrArgs);

var_dump($this-&gt;_request)的内容是:

object(Zend_Controller_Request_Http)#118 (14)  ["_paramSources":protected]=>  
array(2)  [0]=>  string(4) "_GET" [1]=>  string(5) "_POST"  ["_requestUri":protected]=>  string(25) "/dojo/savedetails/" 
["_baseUrl":protected]=>  string(0) "" ["_basePath":protected]=>  NULL ["_pathInfo":protected]=>  string(25) "/dojo/savedetails/" ["_params":protected]=>
array(3)  ["controller"]=>  string(4) "dojo" ["action"]=>  string(18) "savedetails" ["module"]=>  string(7) "default"  ["_aliases":protected]=>  array(0)
  ["_dispatched":protected]=>  bool(true) ["_module":protected]=>  string(7) "default" ["_moduleKey":protected]=>  string(6) "module" 
["_controller":protected]=>  string(4) "dojo" ["_controllerKey":protected]=>  string(10) "controller" ["_action":protected]=>  
string(18) "savedetails" ["_actionKey":protected]=>  string(6) "action"  

我希望我遗漏了一些简单的东西,但是我一直在关注 dojotoolkit.org 上的文档,从他们的示例中这应该可以工作。

如果有帮助的话,我正在使用 Dojo 1.3 和 Zend Framework 1.9。

谢谢,

【问题讨论】:

【参考方案1】:

如果使用postData传递内容,则需要使用dojo.rawXhrPost而不是dojo.xhrPost

【讨论】:

【参考方案2】:

尝试content 而不是postData。另外,加载 Firebug (firefox)、Developer Tools (chrome/IE) 或 Fiddler,看看实际发出的 HTTP 请求是什么样的。

【讨论】:

以上是关于使用 dojo.xhrPost 发布 JSON 字符串的主要内容,如果未能解决你的问题,请参考以下文章

dojo.xhrPost 不发送任何数据

Firefox 不支持 xhrPost 中的 Content-type 标头

使用 Ajax 和 Dojo 轮询服务器

AJAX 响应失败

我们可以同时使用内容类型八位字节流和 json 吗?

使用 Powershell 解析从 Web 请求返回的 JSON 字节流而不写入文件