2014-05-02 36 views
0

我使用$阿贾克斯()将数据发送到数据保存到数据库中的控制器动作。数据保存后,我不需要$ .ajax()的任何回调函数。我只想提出另一种观点。但是由于$ .ajax()需要返回一些东西,所以我收到一个解析器错误。如何使一个Ajax调用,而不回调

这里是我的Ajax调用:

$("#submit_btn").click(handleSubmit); 
function handleSubmit(e) { 
     alert("Clicked!"); 
     e.preventDefault(); 
     var ans = []; 
     for (var i = 0; i <= id_txt; i++) { 
      ans.push($("#_addText" + i).val()) 
     } 
     var options = {}; 
     options.url = "/Technique/Steps"; 
     options.type = "POST"; 
     options.data = JSON.stringify(
     { 
      Id: $("#Id").val(), 
      Poradi: $("#Poradi").val(), 
      TechniqueId: $("#TechniqueId").val(), 
      Answers: ans 
     }); 
     options.contentType = "application/json"; 
     options.dataType = "json"; 
     options.error = function (jqXHR, status, err) { alert(status + "from AJAX"); }; 
     $.ajax(options); 
    }; 

有什么办法说这个方法,我不需要任何东西,所以请不要期望

return JSON(someobject) 
从控制器动作

+0

我的猜测是你得到一个解析器错误,因为你告诉jQuery你正在处理JSON,但你的s erver不会返回JSON。使请求的类型与服务器返回的数据类型相匹配,并且不会出现此错误。 – jfriend00

+0

@ jfriend00是的,我不想JSON返回jQuery的,我只是希望它的数据发送到控制器,仅此而已。所以,如果我返回查看(someobject),那么我应该通过什么?谢谢您的回答。 –

+1

jQuery内置了此功能。您可以执行通用(非jQuery)Ajax调用,然后忽略返回结果。什么是服务器返回?你所要做的就是设置'options.dataType'来匹配服务器返回的数据类型,错误就会消失。 'dataType:“text”'可能会工作,因为jQuery不会像现在使用dataType:“json”那样处理数据。 – jfriend00

回答

1

变化:

options.dataType = "json"; 

到:

options.dataType = "text"; 

由于文本格式需要通过jQuery的不处理时响应到达,你是不是在找一个返回值,无论如何,有一点室为dataType解析错误设置为“text"

+0

还有一个问题 - 是否有可能告诉jQuery不要期待任何回应? –

+0

@ShukhratRaimov - 总是有某种类型的响应,表明请求是成功还是失败,或者是重定向还是别的。这就是http请求的工作原理。除了普通[http响应部分](http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html)之外,不需要任何与响应相关的数据。但显然你的服务器正在发送一些数据。 – jfriend00