JSONP没有在iPad上触发

时间:2010-12-25 23:46:57

标签: jquery jsonp

在尝试了所有可能之后,我得出结论,这是IPad Safari的一个问题。这适用于MacBook上的FF,IE,Chrome和Safari。下面是我愚蠢的代码。我有两个单独的JSONP调用,第一个适用于所有浏览器,包括IPad。这只是根据模糊事件调用函数

$('#gender').blur(function() { reTarget(); });

function reTarget() {
$.getJSON("http://host.com/Jsonpgm?jsoncallback=?", function() { } );
}

以下是事情的发展方向。在与上面代码相​​同的页面上,根据提交按钮单击调用函数。

$(':submit').bind('click', function(event) {
if (checkThis() == false) { return false; }; });

$('form').bind('submit', function(event) {
 if (checkThis() == false) { return false; }; });

function checkThis() {
 $.getJSON("http://host.com/Jsonpgm.aspx?jsoncallback=?", function() { } );
}

此代码不会触发。我已经在它之前发出警报并且它们开火了。我查看了Web日志,这个json调用没有条目。我会就此提出任何建议。在这一点上,我担心从提交事件中解雇jsonp会出现问题。

4 个答案:

答案 0 :(得分:0)

它可能是选择者。尝试选择表单并按ID提交按钮以确保。

答案 1 :(得分:0)

我为此不清楚而道歉。 checkThis()函数正在触发。这是getJSON不是。如果我对该函数使用以下代码,则会触发警报但没有getJSON调用的日志。同样,这适用于所有其他浏览器,包括Apple笔记本电脑上的Safari。

function checkThis(){  警报('得到这么远');  $ .getJSON(“http://host.com/Jsonpgm.aspx?jsoncallback=?”,function(){}); }

答案 2 :(得分:0)

这是最简单的代码。在iPad上,当我选择性别时,我会收到“重新定位”警报,并在网络日志中看到一个条目。当我点击提交时,我会看到“提交”提醒,但网络日志中没有条目。在所有其他浏览器中,一切正常。

    

<div>
    <table>
        <tr><td>First Name:</td>
            <td><input type="text" id="myFirstName" size="15" /></td>
        </tr>
        <tr>
            <td>Gender:</td>
            <td>
                <select id="gender">
                    <option>Select</option>
                    <option value="M">Male</option>
                    <option value="F">Female</option>
                </select>
            </td>
        </tr>
    </table>
<input type="submit" id="btnSubmit" name="Go" />
</div>
<script type="text/javascript" src="my.com/jquery-min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $(':submit').bind('click', function(event) {
        if (checkThis() == false) { return false; }; });
$('#gender').blur(function() { reTarget(); });
 });

function checkThis() {
alert('submit');
var parms = ' {"locationID" : "926", "success" : "1" } '
var takeUrl = "http://my.com/mypgm.aspx?jsoncallback=?";
$.getJSON(takeUrl, parms, function() { } );
}
function reTarget() {
alert('retarget');
var passVals
passVals = ' { "locationid": "926", "pubparms": "45" }'
var targetUrl = "http://my.com/Retarget.aspx?jsoncallback=?";
$.getJSON(targetUrl, passVals, function(data) { } );
}
</script>
</form>

答案 3 :(得分:0)

这已经解决了。经过很多谷歌和论坛后,事实证明,在json电话启动之前,页面拆除已经发生。我更改了代码以停止按钮单击传播,触发getJson调用,然后在回调函数中触发按钮单击。这解决了这个问题。不起作用的是设置为同步调用。