连字符不允许jQuery AJAX调用正常工作


Hyphen not allowing jQuery AJAX call to work properly

问题:通过我的addData()函数传递的参数中有一个连字符;认为"12345678 - 9"。每当传递的数据有一个连字符,我得到Ajax Fail!警报框弹出在我的应用程序。然而,每当我硬编码的$_GET变量是一个字符串或数字没有连字符,我的应用程序的这一部分工作。我已经把范围缩小到连字符可能导致这个错误。


HTML


<button id="add-analysis-button" onClick="addData( $( '#click-number' ).text() )">Add Data</button>

/jQuery Javascript/AJAX


function addData(a_ship) {
$.ajax({
    type: 'GET',
    url: 'models/add-data.php?oShip=' + a_ship,
    mimeType: 'json',
    success: function(data) {
        alert( data );
    },
    error: function() {
        alert('Ajax Fail!');
    }
});

PHP (File: add-data.php)


<?php
echo $_GET['oShip'];

我尝试过的:我尝试过在addData()函数中使用javascript的替换函数将连字符替换为HTML数字。例:a_ship = a_ship.replace('-', '&#45;')。这似乎允许代码部分工作,但随后去掉了连字符后面的数字,这使我陷入另一个问题。

问题:我如何通过连字符从jQuery的AJAX不引起错误?

修改如下:

mimeType: 'json',

:

contentType: 'json',

或者

删除mimeType将解决这个问题。

用此代码替换您的代码并回复结果(可编辑的提琴在这里:http://jsfiddle.net/caLu0kj9/)。注意,在ajax请求中添加了dataType,并在HTML代码中删除了onclick事件。

HTML:

<div id="click-number">12345678-9</div>
<button id="add-analysis-button">Add Data</button>
JavaScript:

$("#add-analysis-button").click(function(){
    addData($( '#click-number').text());
});
function addData(a_ship) {
    $.ajax({
        type: 'GET',
        url: 'models/add-data.php?oShip=' + encodeURIComponent(a_ship),
        dataType: 'json',
        beforeSend: function(jqXHR, settings) {
            jqXHR.url = settings.url;
        },
        success: function(jqXHR, data) {
            alert("SUCCESS! " + data + " " + jqXHR.url);
        },
        error: function(jqXHR) {
            alert("FAIL! " + jqXHR.url);
        }
    });
}