在尝试了所有可能之后,我得出结论,这是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会出现问题。
答案 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调用,然后在回调函数中触发按钮单击。这解决了这个问题。不起作用的是设置为同步调用。