【问题标题】:Jquery Ajax result weird behavior. Need suggestionsJquery Ajax 导致奇怪的行为。需要建议
【发布时间】:2013-01-24 23:42:18
【问题描述】:

我对我的 WCF 服务进行了 ajax 调用,该服务将所有点击记录到服务器中。与我的服务通信的我的 jquery 代码如下

function recordClick(message)
{

     var a =  $.ajax({
            type: "GET",
            url: "http://10.4.201.39:8011/MyService.svc/AddTimeStampToFile" ,
            data: {videoName: message},
            dataType: "json",
            success: serviceSuccess,
            error: errorMessage
     });
     alert(a); ????? // If I delete this line My service always return Error

 }

 function serviceSuccess(data) {
     alert("Click Recorded");  
 }
 function errorMessage () {
     alert("Click Recording Error");
 }

现在,当我删除该行时,我不确定我是否遗漏了什么,或者有很多程序员有类似的经验

alert (a);

在我的 recordClick 函数中,它总是抛出错误。这告诉我,我将对结果做一些事情,在这种情况下我不想做任何事情。

如果这可能有帮助:我的 AddTimeStamp WCF 服务返回一个我主要用于测试目的的 int。

【问题讨论】:

  • $('#linkName').click();这没用?
  • 是的,尼古拉。我更新了我的问题,感谢您的观察。
  • 如果您使用的是谷歌浏览器,请添加控制台输出(按 F12 并打开控制台选项卡)
  • 澄清一下,如果有alert(a);,您会收到第二个以Click Recorded 作为消息的警报,而如果没有alert(a);,您会收到一个以Click Recording Error 作为消息的警报?对吗?
  • 上面的代码运行良好,事件就像 alert(Click Recorded) 被触发然后 alert(a) 被触发。然后删除警报(a)行时-ajax调用以某种方式执行了一种奇怪的行为,它总是触发警报(“单击记录错误”)-这对我来说真的很奇怪。整个代码的工作只是因为我想知道它为什么会这样做。

标签: c# jquery ajax wcf


【解决方案1】:

您错误地调用了您的点击事件,请改用它:

$('#linkName').click(function() {
  var a =  $.ajax({
         type: "GET",
         url: "http://10.4.201.39:8011/MyService.svc/AddTimeStampToFile" ,
         data: {videoName: message},
         dataType: "json",
         success: serviceSuccess,
         error: errorMessage
  });
  alert(a); ????? // If I delete this line My service always return Error

 });

function serviceSuccess(data) {
  alert("Click Recorded");    
 }  

 function errorMessage () {
  alert("Click Recording Error");  
 }

【讨论】:

  • $('#linkName').click(); 只是触发事件处理程序,这可能是 OP 想要的。这当然不是错误的原因。
  • 嗨,我根据 linkName.Click 更新了我的问题。这实际上触发了一个下载文件的事件——这与我的 ajax 调用无关。
【解决方案2】:

尝试将您的 recordClick 函数更改为:

function recordClick(message) {
    $('#linkName').click(); //fire the click event handler for #linkName
    $.ajax({
        "type": "GET",
        "url": "http://10.4.201.39:8011/MyService.svc/AddTimeStampToFile" ,
        "data": {
            "videoName": message
        },
        "dataType": "json",
        "success": function (data, textStatus, jqXHR) {
            alert(data);
        },
        "error": function (jqXHR, textStatus, errorThrown) {
            alert(textStatus + ':' + errorThrown);
        }
    });
}

你遇到了什么错误?

【讨论】:

  • 嗨,谢谢你,但我试过了,但我这边没有用。当我使用“var a”执行某些操作时,我的服务调用工作顺利,在这种情况下我使用警报。当我删除这条线时,它会完全做一些我不确定的事情,但最终结果是我的服务调用不成功。
  • 更新:我运行你的代码,错误被抛出 textStatus= "error" 并且 errorThrown 没有价值。
  • @jepoyscreepers:在我的答案中发现了一个可能导致错误的错字。请尝试更新答案中的代码并发布您的结果。
猜你喜欢
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
相关资源
最近更新 更多