Javascript window.location调用迷路了吗?

时间:2014-01-03 03:09:57

标签: javascript jquery asynchronous window.location

我在使用一些代码时遇到了一些麻烦。我有一个函数可以对某些数据执行某些操作,调用远程系统(激活该系统上的脚本并传入数据),然后再次调用同一系统来激活不同的脚本(对数据起作用)保存在上面)。问题是对远程系统的第一次调用似乎在执行中丢失了。

这是在Safari中运行,使用jquery;该函数与按钮单击相关联,按钮单击在javascript代码中使用onclick函数定义(即,它未在html按钮定义中定义)。

以下是该功能的粗略分类(为了查看目的而清理干净 - 我希望我留下足够清楚):

function compareJSON() {
    // loop through the objects, testing and changing data
    //  ...

    dataSession=({ //build object for output    });   

    $.each( dataSession.chapters , function( indexC, value ) {  
        //compare objects to some others, testing and changing data
    });

    //  ...

    //Call remote script on other system
    urlString="url://blah.dee.com/Blar?script=SaveJSON&$JSONobject=";
    window.location= urlString + JSON.stringify(dataSession);

   //Call remote script on other system
   window.location="url://blah.dee.com/Blar?script=EditJSON";
}

最后三行代码是两个调用。它使用window.location实际触发远程系统,通过URL传递数据。但我需要两个脚本来调用和运行。似乎只有序列中的LAST脚本才会运行。如果我切换它们仍然是最后的地方。

是否有一些关于window.location的东西,直到函数结束才真正处理?

这个脚本实际上曾经是一系列单独的函数调用,但我认为我遇到了异步执行,导致各种脚本调用没有注册。但是,一旦我将代码放入这个单一的函数中,它仍然会发生。

任何线索都会有所帮助。

谢谢, Ĵ

1 个答案:

答案 0 :(得分:0)

修改window.location的值专门用于您希望导致浏览器重定向的实例。

看起来您想要触发页面请求。你说你已经加载了jQuery,如果是这样,你可以使用jQuery.get或类似函数触发这样的请求。

例如:

// Loads the myscript.php page in the background
$.get('myscript.php');

// You can also pass data (in the form of an object as the second argument)
$.get('myscript.php', { name: "John", time: "2pm" });