2012-05-05 43 views
0

我在jquery中有这个帖子请求代码,它似乎发送请求并返回结果(我可以在提琴手中看到它),但以某种方式在web应用程序中,它将发生错误并给出空警报。怎么了?我的帖子请求有什么问题?

var jqxhr =$.post("http://abhishek:9090/abc/login.action", 
    { emailaddress:  e_add, 
     projectid: p_id }, 
     function(xml) 
     {  
     /*not coming here, goes to error*/ 

      if($(xml).find('isSuccess').text()=="true") 
      { 
      sessiontoken=$(xml).find('sessiontoken').text(); 

      var formMainRef=document.createElement("form"); 
      formMainRef.action="http://abhishek:9090/abc/home.action"; 
      formMainRef.method="post"; 
      formMainRef.target="_self"; 
      formMainRef.id="launch"; 
      document.body.appendChild(formMainRef); 

      var cfgemailField = document.createElement("input"); 
      cfgemailField.name="emailaddress"; 
      cfgemailField.type="hidden"; 
      cfgemailField.value=e_add; 
      formMainRef.appendChild(cfgemailField); 

      var cfgpidField = document.createElement("input"); 
      cfgpidField.name="projectid"; 
      cfgpidField.type="hidden"; 
      cfgpidField.value=p_id; 
      formMainRef.appendChild(cfgpidField); 

      var cfgstField = document.createElement("input"); 
      cfgstField.name="sessiontoken"; 
      cfgstField.type="hidden"; 
      cfgstField.value=sessiontoken; 
      formMainRef.appendChild(cfgstField);         

      setCookie("abcsessionid", sessiontoken , 1); 
      setCookie("abcusername",e_add,1); 

      formMainRef.submit(); 
      } 
     } 
) 
.error(function() { 
    if(jqxhr.responseText == 'INVALID_SESSION') { 
    alert("Your Session has been timed out"); 
    window.location.replace("/abc/view/index.html"); 
    }else { 
    /*comes here, after sending request*/ 
    alert(jqxhr.responseText); 
    } 
}); 

login.action返回一个小型的XML

<Response> 
    <sessiontoken>4611686352224309486</sessiontoken> 
    <isSuccess>true</isSuccess> 
</Response> 
+0

尝试删除域名并仅使用相对路径(如$ .post(“/ abc/login.action“,... – Bryan

+0

@BryanMoyles:它在那种情况下工作..包括域在这里应该是一个问题? – abi1964

回答

0

包括域名是一个问题,因为该浏览器会阻止跨域请求的潜力。通过使用相对路径,您可以双倍确认您发布的脚本驻留在本地服务器上,绕过任何潜在的安全限制

+0

情景是我有一个旧的webapp托管在'http:// ab:11111/abc' (这是很久以前在c + +),并且这个请求是从这个页面本身发出,一些检查完成,如果它满足条件去更新版本的webapp(用完全不同的语言Java),它应该去' http:// de:22222/def' webapp。是这样的可能吗? – abi1964

+0

我的建议是发布到本地脚本,然后向适当的服务器发送后端curl请求,并返回适当的内容。通过使用服务器端脚本作为您的代理,您将绕过任何浏览器安全限制 – Bryan

相关问题